当元素状态不可见时,@ FindBy批注找不到元素

时间:2019-05-24 13:12:26

标签: selenium serenity-bdd cucumber-serenity findby

当元素状态不可见时,

@FindBy注释找不到元素。我们正在编写一些SEO测试,这些元素在网页上不可见。

例如以下操作无效;

@CacheLookup
@FindBy(xpath = "//meta[@name='description']")
public WebElementFacade metaDescription;

但这可行;

WebElement metaV2 = getDriver().findElement(By.xpath("//meta[@name='description']"));

出现类似错误

org.openqa.selenium.ElementNotVisibleException: Timed out after 15 seconds. Element not available

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:2)

WebElementFacade希望元素在与它进行交互之前是可见的(许多标准WebElement方法也是如此)。如果要检查不可见的元素,请使用WebElement或完全避免使用@FindBy,例如

By META_V2 = By.xpath("//meta[@name='description']")
.
.
.
$(META_V2).shouldBePresent();