2014-03-03 239 views
1

我有一个使用WebDriver在Java中的Selenium测试套件。 我有一个通用的等待函数,它使用一个CSS选择器,并在使用WebDriverWait移动到断言之前等待该元素变为存在且可见。但是,现在,我希望在继续之前,等待某些类型的所有元素(DOM中的元素不再可见)。确切的例子是我有一些图像被加载,我想等待他们的加载纺纱器在继续之前消失。还没有找到能够解决这个问题的东西,所以在这里发布。 任何线索?Selenium与WebDriver - 等待

谢谢!

public void waitForPageToLoad(WebDriver webDriver, String cssToWaitFor) { 
    WebDriverWait wait = new WebDriverWait(webDriver, 20); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(cssToWaitFor))); 
} 
+0

请问您可以发布您的当前通用“等待”方法,以便我们可以调整它。 – Arran

+0

当然!原文编辑。 – joakimnorberg

+0

@Arran:你的名声发生了什么?有人被删除? –

回答

3

检查invisibilityOfElementLocated的预期条件。 Reference。从DOC:

invisibilityOfElementLocated 

public static ExpectedCondition<java.lang.Boolean> invisibilityOfElementLocated(By locator) 

An expectation for checking that an element is either invisible or not present on the DOM. 

Parameters: 
    locator - used to find the element 

所以,你可以用它喜欢:

public void waitForInvisibility(WebDriver webDriver, String cssToWaitFor) { 
    WebDriverWait wait = new WebDriverWait(webDriver, 20); 
    wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(cssToWaitFor))); 
} 

或者你可以看看public static ExpectedCondition<java.lang.Boolean> not(ExpectedCondition<?> condition),其中由DOC的作用:

期望与逻辑相反的条件o f给定的 条件。

+0

这没有把戏。 谢谢! – joakimnorberg

相关问题