FindBy避免完整的xpath

时间:2017-01-05 09:50:10

标签: java selenium xpath

在我的课程中定义了以下WebElements

 @FindBy(xpath = ".//div[contains(@id, 'myform')]")
 private WebElement form;

 @FindBy(xpath = ".//div[contains(@id, 'myform')]"+ "/div/div/div/fieldset/div/div/div/div/div/div/div/input[contains(@id, 'name')]")
 private  WebElement name;

我能够在名称WebElement上找到并执行sendKeys。 但是这个“/ div / div / div / fieldset / div / div / div / div / div / div / div /”看起来并不好看。我怎样才能避免它并仍能找到我的元素?

3 个答案:

答案 0 :(得分:0)

使用

<Menu VerticalAlignment="Top">
    <MenuItem Header="Items">
        <MenuItem Name="item1" Header="Item #1" IsCheckable="True" />
        <MenuItem Name="item2" Header="Item #2"  IsEnabled="{Binding ElementName=item1,Path=IsChecked}" />
    </MenuItem>
</Menu>

答案 1 :(得分:0)

如果您拥有该元素的id,那么您可以使用它直接找到该元素,例如.-

@FindBy(id= "name")

虽然您也可以尝试以这种方式使用xpath -

@FindBy(xpath = "//input[contains(@id, 'name')]") 

@FindBy(xpath = "//div[contains(@id, 'myform')]//input[contains(@id, 'name')]") 

答案 2 :(得分:0)

如果ID可用,最好使用ID。因此,使用id声明将是:

@FindBy(id = "name");

但如果您想使用x-path,请以最短的形式尝试:

@FindBy(xpath = "//input[@id ='name']");