Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 等待直到使用页面工厂不可见';行不通_Selenium - Fatal编程技术网

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);
}
...
}
你可以在这里找到