2016-03-22 46 views
0

有什麼辦法可以避免使用driver.wait or driver.sleep命令?有沒有辦法避免在硒中使用等待和睡眠?

driver.manage().timeouts().implicitlyWait(3000)之類的東西被用作一般超時,直到元素位於?

我在自動測試新的編碼硒:)

+0

我的回答有幫助嗎? –

+1

我設法使用一般規格中使用的波紋管方法「繞道」,但您的答案肯定有幫助,謝謝。 – MirceaM

回答

2

可以建立顯性和隱性的等待。

顯式的一個例子等待即等待明確地特定元素出現:

IWebDriver driver = new FirefoxDriver(); 
driver.Url = "http://somedomain/url_that_delays_loading"; 
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement myDynamicElement = wait.Until<IWebElement>((d) => 
{ 
    return d.FindElement(By.Id("someDynamicElement")); 
}); 

一個隱式的等待的一個例子(即,等待的時間的任意的量)是:

WebDriver driver = new FirefoxDriver(); 
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 
driver.Url = "http://somedomain/url_that_delays_loading"; 
IWebElement myDynamicElement = driver.FindElement(By.Id("someDynamicElement")); 

有關更多信息,請參閱here

0

您可以使用顯式的等待

new WebDriverWait(driver, new TimeSpan(0, 1, 0)).Until(ExpectedConditions.ElementIsVisible(By locator)); 

等待的元素一分鐘。

0

非常感謝您的回答。我設法讓一個「彎路」有以下幾點:

function findClickElem(locator, path, timeout) { 

      driver.wait(generalspecs.getSpecs().until.elementLocated(generalspecs.getSpecs().By[locator](path)), timeout).then(function(elem){ 
       if(elem){ 
        elem.click(); 
       }else{ 
        console.log('no element!'); 
       } 
      }); 
     } 

剛剛添加到generalspecs,每次我用等待和點擊元素時被調用。

findClickElem("xpath" ,"//li[contains(@class, 'classCustom1')]", 15000); 
相關問題