使用@FindBy查找元素。重构和最佳实践

时间:2015-06-29 18:08:59

标签: java selenium testing xpath selenium-webdriver

我目前在我的selenium框架中有这种方法。

public void selectAddProductButton() {
    driver.findElement(By.id("Content")).findElement(By.className("Title")).findElement(By.tagName("a")).click();
}

然而,我喜欢它而且我不喜欢它。我觉得这是一种接近这个的肮脏方式。我认为使用@FindBy会更好,但我不知道我怎么做。我已经在线阅读了我可以通过使用带有xpath的@FindBy来实现这一点。但是,我也读过这种方式使用xpath是一种不好的做法。有没有更好的方法可以做到这一点?我通常使用@FindBy来做更简单的事情。一个例子是

@FindBy(id = "firstname")
private WebElement firstName;

除非我使用xpath

,否则我认为找不到使用@FindBy嵌套在其他元素中的元素的方法

1 个答案:

答案 0 :(得分:2)

当然。您实际上还有其他多个选项以及xpath。在这种情况下,您需要使用另一个参数。 how = How.ID

示例

FindBy(how = How.ID, using = "foobar") WebElement foobar;

查找Java文档here

Enum How为您提供以下所有选项:

•css

•id

•linkText

•姓名

•partialLinkText

•tagName

•使用

•xpath