有什麼辦法可以避免使用driver.wait or driver.sleep
命令?有沒有辦法避免在硒中使用等待和睡眠?
像driver.manage().timeouts().implicitlyWait(3000)
之類的東西被用作一般超時,直到元素位於?
我在自動測試新的編碼硒:)
有什麼辦法可以避免使用driver.wait or driver.sleep
命令?有沒有辦法避免在硒中使用等待和睡眠?
像driver.manage().timeouts().implicitlyWait(3000)
之類的東西被用作一般超時,直到元素位於?
我在自動測試新的編碼硒:)
可以建立顯性和隱性的等待。
顯式的一個例子等待即等待明確地特定元素出現:
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。
您可以使用顯式的等待
new WebDriverWait(driver, new TimeSpan(0, 1, 0)).Until(ExpectedConditions.ElementIsVisible(By locator));
等待的元素一分鐘。
非常感謝您的回答。我設法讓一個「彎路」有以下幾點:
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);
我的回答有幫助嗎? –
我設法使用一般規格中使用的波紋管方法「繞道」,但您的答案肯定有幫助,謝謝。 – MirceaM