selenium等到方法返回true

时间:2017-06-13 13:28:40

标签: c# selenium selenium-webdriver

我知道selenium webdriver可以做到这一点:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("someclass")));

我的方法不能这样做吗?例如,我有一个方法,它截取屏幕截图并与另一张图片进行比较。我想等到该方法返回true。

所以我有这个代码

while (WelcomeScreen(driver) != true)
{
    Thread.Sleep(1000);   
}

我找不到更好的解决方案了?

1 个答案:

答案 0 :(得分:4)

你可以使用 FluentWait ,我不熟悉C#所以下面的代码示例是在Java中。如果你可以将它转换为C#,我认为它可能会有效。

 Wait wait = new FluentWait<WebDriver>(driver)
        .withTimeout(30, TimeUnit.SECONDS)
        .pollingEvery(5, TimeUnit.SECONDS)
        .ignoring(NoSuchElementException.class);

 wait.until(new Function<WebDriver, Boolean>() {
                public Boolean apply(WebDriver driver) {
                    return WelcomeScreen(driver)
                }
              }
 );