9

I have wrritten a feature file to test the create elements button. But it generates an error message of

cucumber.runtime.CucumberException: Arity mismatch: Step Definition. 

I dont know why its happening since I am new to automation testing.

The following is the code that I have written.

@When("^create elements$")
public void create_elements_for_attributes(WebElement elementToClick) throws Throwable {
driver.findElement(By.id("newElement")).click();
}

The error that I have recieved is as follows.

cucumber.runtime.CucumberException: Arity mismatch: Step Definition 'mCollector.features.StepDefinitions_mCollector.create_elements_for_attributes(WebElement) in file:/C:/Users/Admin/workspace/MStudio%20-%20eBilling/bin/' with pattern [^create elements$] is declared with 1 parameters. However, the gherkin step has 0 arguments [].
  • Did the answer below help? – Eugene S May 09 '16 at 01:39
  • 1
    Does this answer your question? [What is "cucumber.runtime.CucumberException: Arity mismatch: Step Definition" in java testing?](https://stackoverflow.com/questions/68890409/what-is-cucumber-runtime-cucumberexception-arity-mismatch-step-definition-in) – Marit Jun 16 '23 at 09:13

1 Answers1

7

In your create_elements_for_attributes method you are expecting one argument of type WebElement but your regex does not capture any arguments. It should look something like that instead:

@When("^create elements \"([^\"]*)\"$")

And then in your feature file:

When create elements "element"

But that won't work either because you can't pass a WebeElement object from your Cucumber feature file. You should only operate with primitive values and DataTables. Other types (like WebeElement) should be created internally in the glue code itself.

Eugene S
  • 6,709
  • 8
  • 57
  • 91