Getting duplicate step definition exception | Selenium Forum
N
nic.nrs Posted on 13/07/2019

Please suggest the resolution on the below error occuring in running runner class -

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

cucumber.runtime.DuplicateStepDefinitionException: Duplicate step definitions in com.webautomation.step.genericsteps.state(String,String) in file:/F:/Eclipse-Cucumber-WS/CucumberProject/target/test-classes/ and com.webautomation.step.genericsteps.country(String,String) in file:/F:/Eclipse-Cucumber-WS/CucumberProject/target/test-classes/
at cucumber.runner.Glue.addStepDefinition(Glue.java:38)
at cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:141)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:64)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:41)
at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:82)
at cucumber.runner.Runner.<init>(Runner.java:39)
at cucumber.runner.ThreadLocalRunnerSupplier.createRunner(ThreadLocalRunnerSupplier.java:42)
at cucumber.runner.ThreadLocalRunnerSupplier.access$000(ThreadLocalRunnerSupplier.java:13)
at cucumber.runner.ThreadLocalRunnerSupplier$1.initialValue(ThreadLocalRunnerSupplier.java:22)
at cucumber.runner.ThreadLocalRunnerSupplier$1.initialValue(ThreadLocalRunnerSupplier.java:19)
at java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:195)
at java.base/java.lang.ThreadLocal.get(ThreadLocal.java:172)
at cucumber.runner.ThreadLocalRunnerSupplier.get(ThreadLocalRunnerSupplier.java:38)
at io.cucumber.junit.Cucumber$RunCucumber.evaluate(Cucumber.java:171)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Step Definition code - 

 

package com.webautomation.step;

import java.util.List;

import com.webautomation.webdriver.WebConnector;

import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

public class genericsteps {

WebConnector con;

public genericsteps(WebConnector con) {
this.con = con;
}

@Given("^I open ([^\"]*)$")
public void openBrowser1(String browserName){
// System.out.println("Opening Browser "+browserName);
con.openBrowser(browserName);
}

@And("^I launch ([^\"]*) of Online Shopping portal$")
public void launchsite(String URL) {
// System.out.println("Navigate to Automation Practice shopping portal" + URL);
con.navigate(URL);
}

@When ("^I click on Sign-In ([^\"]*)$")
public void clicksigninlink(String link) {
// System.out.println("Clicked sign-in option" + link);
con.click(link);
}

@Then("^I am navigated to Sign-up page$")
public void signuppage() {
System.out.println("I am taken to sign-up page");
}

@Given("^I am at sign-up page$")
public void registerpage() {
System.out.println("I am on sign-up page");
}


@When("^I enter the ([^\"]*) at the ([^\"]*) field$")
public void enteremail(String emailid, String email_field_locator) {
// System.out.println("enter the email id"+emailid+ "email xpath - "+email_field_locator);
con.type(email_field_locator, emailid);

}

@And("^click ([^\"]*)$")
public void clickcreateanaccountbtn(String create_an_account_button_xpath) {
// System.out.println("Clicked create an account button");
con.click(create_an_account_button_xpath);
}

@Then("^I am taken to create an account page$")
public void intocreateanaccountpage() {
System.out.println("I am inside create an account page");
}

@Given ("^I am on create an account page$")
public void iamoncreateanaccountpage() {
System.out.println("I am on create an account page");
}

@When ("^I select my ([^\"]*)$")
public void select_salutation(String salutation_value, List<String> radio_option_xpath) {
con.selectradioption(salutation_value, radio_option_xpath);
}
@And ("^enter ([a-zA-Z]{1,}) at ([^\"]*)$")
public void fname(String fname_var, String fname_xpath) {
con.type(fname_xpath, fname_var);

}
@And ("^enter ([a-zA-Z]{1,}) at ([^\"]*)$")
public void lname(String lname_var, String lname_xpath) {
con.type(lname_xpath, lname_var);
}
@And ("^enter ([^\"]*) at ([^\"]*)$")
public void password(String password_var, String password_xpath) {
con.type(password_xpath, password_var);
}
@And ("^enter (\\d+) at ([^\"]*)$")
public void day(String day_var, String day_name_select) {
con.selectdropdown(day_name_select, day_var);
}
@And ("^enter ([a-zA-Z]{1,}) at ([^\"]*)$")
public void month(String month_var, String month_name_select) {
con.selectdropdown(month_name_select, month_var);
}
@And ("^enter (\\d+) at ([^\"]*)$")
public void year(String year_var, String year_name_select) {
con.selectdropdown(year_name_select, year_var);
}
@And ("^enter ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void company(String company_var, String company_xpath) {
con.type(company_xpath, company_var);
}
@And ("^enter ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void address(String address_var, String address_xpath) {
con.type(address_xpath, address_var);
}
@And ("^enter ([a-zA-Z]{1,}) at ([^\"]*)$")
public void city(String city_var, String city_xpath) {
con.type(city_xpath, city_var);
}
@And ("^select ([a-zA-Z]{1,}) at ([^\"]*)$")
public void state(String state_var, String state_name_select) {
con.selectdropdown(state_name_select, state_var);
}
@And ("^enter (\\d+) at ([^\"]*)$")
public void zipcode(String zipcode_var, String zipcode_xpath) {
con.type(zipcode_xpath, zipcode_var);
}
@And ("^select ([a-zA-Z]{1,}) at ([^\"]*)$")
public void country(String country_name_var, String county_name_select) {
con.selectdropdown(county_name_select, country_name_var);

}
@And ("^enter (\\d+) at ([^\"]*)$")
public void mobnumber(String mob_number_var, String mob_number_xpath) {
con.type(mob_number_xpath, mob_number_var);

}
@And ("^enter ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void addressalias(String address_alias_var, String address_alias_xpath) {
con.type(address_alias_xpath, address_alias_var);

}
@And ("^click ([^\"]*)$")
public void registerbutton(String register_button_var) {
con.click(register_button_var);
}
@Then ("^I am taken to My Account page$")
public void registered() {
System.out.println("Successfully registered...!!");
}

}

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Feature file - 

 

@RegisterUser
Feature: Register User on automation practice online shopping portal

Background:
Given I open browsername1
And I launch URL of Online Shopping portal
When I click on Sign-In Link_xpath
Then I am navigated to Sign-up page

@GoToSignUpPage
Scenario: User create an account
Given I am at sign-up page
When I enter the email_id at the email_id_xpath field
And click create_an_account_button_xpath
Then I am taken to create an account page

@EnterYourPersonalDetails
Scenario Outline: Enter Personal and Address details
Given I am on create an account page
When I select my <salutation>
|Mr-Salutation-id|Mrs-Salutation-id|
And enter <fname> at fname-xpath
And enter <lname> at lname-xpath
And enter <password> at password-xpath
And select <day> at day-name-select
And select <month> at month-name-select
And select <year> at year-name-select
And enter <company> at company-xpath
And enter <address> at address-xpath
And enter <city> at city-xpath
And select <state> at state-name-select
And enter <zipcode> at zipcode-xpath
And select <country> at country-name-select
And enter <mob-number> at mob-number-xpath
And enter <address-alias> at address-alias-xpath
And click register-button-xpath
Then I am taken to My Account page

Examples:
|fname |lname|password |day|month |year|company|address |city |state|zipcode|country |mob-number|address-alias|
|Nikhil|Gupta|password123|23 |August|1988|RBS |Cybercity|Gurugram|Texas|00001 |United States|9498070042|Office-Addr |


A
Ashish Thakur Replied on 17/07/2019

Before suggesting a solution, we need to analyze your code first. Please export your project in a compressed zip file and share it with us.