Selenium 等待直到使用页面工厂不可见';行不通
我有以下代码:Selenium 等待直到使用页面工厂不可见';行不通,selenium,Selenium,我有以下代码: @FindBy(how = How.CLASS_NAME, using = "loading-class") WebElement loadingAnimation; 当我尝试使用这一行时: waitDriver.until(ExpectedConditions.invisibilityOf(this.loadingAnimation)); 它抛出异常: org.openqa.selenium.TimeoutException: Expected cond
@FindBy(how = How.CLASS_NAME, using = "loading-class")
WebElement loadingAnimation;
当我尝试使用这一行时:
waitDriver.until(ExpectedConditions.invisibilityOf(this.loadingAnimation));
它抛出异常:
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for invisibility of Proxy element for: DefaultElementLocator 'By.className: loading-container' (tried for 30 second(s) with 500 milliseconds interval)
由于某种原因,当我调试代码时,它会工作
我要提到的是,这也适用于:
while(true)
{
try {
this.loadingAnimation.isDisplayed();
}
catch (Exception e) {
break;
}
}
如何使用页面工厂工作?当您实现页面对象模式并使用
PageFactory
Selenium初始化页面时,Selenium为您提供了使用自定义ElementLocator
的功能。有一个ajaxementlocator
应该用于动态元素
<>为了应用你自己的逻辑,考虑如何使用你的元素,默认的实现方法是
受保护的布尔值IsElementAvailable(WebElement){
返回true;
}
因此,您可以自由覆盖该选项以实现您的条件。简而言之,您需要实现自定义的ElementLocatorFactory
,它将使用自定义的iselementavailable
方法生成ajaxementlocator
对象。然后,您将使用
公共类页面{
...
公共页面(…){
initElements(新的YourCustomLocatorFactory(…),this);
}
...
}
你可以在这里找到