2017-06-13 33 views
0

我知道,硒的webdriver可以這樣做:硒等到方法返回true

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

我不能做我的方法是什麼?例如,我有一個方法,它會截圖並與另一張圖片進行比較。我想等到該方法返回true。

所以我有這樣的代碼

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

我無法找到任何更好的解決辦法?

回答

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) 
       } 
       } 
); 
+1

謝謝你的回答。等效在c#將是這樣的代碼: wait.Until((X)=> { 如果(WelcomeScreen(驅動器)) 返回真; 返回假; }); – gsiradze

+0

是否可以通過該方法傳遞該方法(在本例中爲'public Boolean apply(WebDriver driver){WelcomeScreen(driver) }'作爲參數? –

+0

@HappyBird您通過傳遞方法是什麼意思,它返回值'WelcomeScreen'方法返回 –