我要在this page以上用黄瓜运行硒。这是黄瓜情景和大纲
@tag
Feature: Check the checkbox
Webdriver should be able to check the checkbox lists
@tag1
Scenario: Check the checkbox
Given I am in checkbox task page
When I can check the hobbies from the checkbox
And I click on "Next Task"
Then It navigates to the next task
@tag2
Scenario Outline: Title of your scenario outline
Given I am in "http://suvian.in/selenium/1.6checkbox.html"
When I can check the <id> from the checkbox
And I click on "Next Task"
Then It navigates to the "http://suvian.in/selenium/1.7button.html"
Examples:
| id |
| 1 |
| 2 |
| 3 |
| 4 |
然后在POM(页面对象模型)中,复选框的id为checkId
。我有以下内容:
public class CheckBoxPage {
@FindBy(how=How.ID, using="????")
public WebElement checkId;
}
我不知道如何设置using
部分。问题是Id
与1 to 4
不同。
答案 0 :(得分:0)
无法做到。 @FindBy
注释期望using
为String常量,无法动态设置。
为什么不在CheckBoxPage
中定义所有四个复选框?这并不是说页面上的复选框数量会发生变化。
public class CheckBoxPage {
@FindBy(how= How.ID, using="1")
private WebElement singingCheckbox;
@FindBy(how= How.ID, using="2")
private WebElement dancingCheckbox;
@FindBy(how= How.ID, using="3")
private WebElement sportsCheckbox;
@FindBy(how= How.ID, using="4")
private WebElement gamingCheckbox;
}
答案 1 :(得分:0)
您无法使用PageFactory为标识符设置dyanic值,因为它需要constant String
作为值
但是,如果你真的必须实现这一点,你可以在步骤中创建元素并单击它,如下所述。
Feature: Check the checkbox
Scenario Outline: Click all Check Boxes
Given I am in "http://suvian.in/selenium/1.6checkbox.html"
Then It should click <id> checkbox
Examples:
| id |
| 1 |
| 2 |
| 3 |
| 4 |
步骤定义
@Given("^I am in \"([^\"]*)\"$")
public void i_am_in(String arg1) throws Throwable {
driver.get(arg1);
}
@Then("^It should click (\\d+) checkbox$")
public void it_should_click_checkbox(int arg1) throws Throwable {
driver.findElement(By.id(Integer.toString(arg1))).click();
}
答案 2 :(得分:-2)
这些步骤将添加到定义类中,您将在那里引用ID
。由于您将四个值指定为ID
,因此@tag2
方案将运行四次,并且每次运行时都会相应地采用ID
的值。即,在第一次运行时,ID
中的值将为1,其中ID
值将为2,依此类推。