Skip to main content

Cucumber Escaping Quotation Marks

While asserting some text on a webpage, sometimes you will find that part of the text contains a single quote or double quote.

Then I should see "Hello "World"" text

The step which Cucumber Auto generates for you will escape the text but will not accept the text given in double-quotes, and if you try to take this parameter in your method, you will get an error. 

Step Generated By Cucumber

@Then("I should see \"Hello \"World\"\" text")
public void i_should_see_hello_world_text() {
}

This will not read "Hello "World""

You will get "The gherkin step has 0 arguments Error" if you will try to pass parameter to your method like this:

@Then("I should see \"Hello \"World\"\" text")
public void i_should_see_hello_world_text(String s) {
}

and if you will try to replace Hello World with parameter {string}, Cucumber will not detect your step definition.

Escaping of quotation marks in Cucumber steps

One way to handle this is to add a backslash (\) before double quotes or single quotes in your step.

Steps

Then I should see "Hello \'World\'" text
Then I should see "Hello \"World\"" text

Step Definition

Below step definition will work fine for above 2 steps.

@Then("I should see {string} text")
public void i_should_see1(String string) {
    System.out.println("Test:"+string);
}

Capturing Quotes in Step Definition

Then I should see "Hello "World"" text
Then I should see "Hello 'World'" text

Handling Double Quotes

@Then("^I should see \"([\\w\\s\"]*)\" text$")
public void teststep3(String s)
{
    System.out.println("value is:"+s);
}
	

or

@Then("^I should see \"([a-zA-Z \"]*)\" text")
public void i_should_see_text(String string) {
    System.out.println(string);
}

Handling Single Quotes 

@Then("^I should see \"([\\w\\s']*)\" text$")
public void teststep4(String s)
{
    System.out.println("value is:"+s);
}

Handling Single and Double Quotes together

@Then("^I should see \"([\\w\\s\"']*)\" text$")
public void teststep3(String s)
{
	System.out.println("value is:"+s);
}

Here,

  • () : Capturing Group
  • [] : Match Character in Bracket
  • \\w : word Character. You can also use a-zA-Z
  • \\s : Whitespace. You can also use space
  • \" : For Double Quotes
  • ' : For Single Quotes
  • : 0 or More

Video Tutorial: Escape Single and Double Quotes in Cucumber

Submitted by tgoswami on June 15, 2021

Tarun has 11+ years of experience in Quality Assurance in different domains like Banking, E-commerce, Health and Education.

About

At ProgramsBuzz, you can learn, share and grow with millions of techie around the world from different domain like Data Science, Software Development, QA and Digital Marketing. You can ask doubt and get the answer for your queries from our experts.