Feature: Item count check in Ebay
@Par4
Scenario: Filters in Advanced Search Page
Given I am in Ebay Shopping Homepage
When I advanced search on item
| keyword | Exclude | min | max |
| iphone 11 | refurbished | 300 | 900 |
==========================
package Steps;
import static org.testng.Assert.fail;
import java.util.List;
import java.util.Map;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import io.cucumber.datatable.DataTable;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class ParameterSteps {
WebDriver driver;
public ParameterSteps(HookSteps hook_steps) {
this.driver=hook_steps.getDriver();
}
@Given("I am in Ebay Shopping Homepage")
public void i_am_in_ebay_shopping_homepage() throws InterruptedException {
driver.get("https://www.ebay.com/");
Thread.sleep(1000);
}
@When("I advanced search on item")
public void i_advanced_search_on_item(DataTable dataTable) throws InterruptedException {
driver.findElement(By.linkText("Advanced")).click();
driver.findElement(By.xpath("//input[@id='_nkw']")).sendKeys(dataTable.cell(1, 0));
driver.findElement(By.xpath("//input[@id='_ex_kw']")).sendKeys(dataTable.cell(1, 1));
driver.findElement(By.xpath("//input[@name='_udlo']")).sendKeys(dataTable.cell(1, 2));
driver.findElement(By.xpath("//input[@name='_udhi']")).sendKeys(dataTable.cell(1, 3));
Thread.sleep(1000);
driver.findElement(By.xpath("//div[@class='field adv-keywords__btn-help']//button[@type='submit'][normalize-space()='Search']")).click();
Thread.sleep(3000);
}
}
import static org.testng.Assert.fail;
import java.util.List;
import java.util.Map;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import io.cucumber.datatable.DataTable;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class ParameterSteps {
WebDriver driver;
public ParameterSteps(HookSteps hook_steps) {
this.driver=hook_steps.getDriver();
}
@Given("I am in Ebay Shopping Homepage")
public void i_am_in_ebay_shopping_homepage() throws InterruptedException {
driver.get("https://www.ebay.com/");
Thread.sleep(1000);
}
@When("I advanced search on item")
public void i_advanced_search_on_item(DataTable dataTable) throws InterruptedException {
driver.findElement(By.linkText("Advanced")).click();
driver.findElement(By.xpath("//input[@id='_nkw']")).sendKeys(dataTable.cell(1, 0));
driver.findElement(By.xpath("//input[@id='_ex_kw']")).sendKeys(dataTable.cell(1, 1));
driver.findElement(By.xpath("//input[@name='_udlo']")).sendKeys(dataTable.cell(1, 2));
driver.findElement(By.xpath("//input[@name='_udhi']")).sendKeys(dataTable.cell(1, 3));
Thread.sleep(1000);
driver.findElement(By.xpath("//div[@class='field adv-keywords__btn-help']//button[@type='submit'][normalize-space()='Search']")).click();
Thread.sleep(3000);
}
}
- Maps the steps in the feature file to Selenium code. The DataTable is used to extract values from the table row using dataTable.cell(row, column) (i.e., cell(1,0) refers to "iphone 11"). Navigates to the Advanced Search page, fills in form fields, and performs a search.
==========================
package testRunner;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(features ="src/test/java/Features", glue = "Steps", tags = "@Par4", monochrome = true)
public class ParameterRunner extends AbstractTestNGCucumberTests {
}