3 回答

TA贡献1811条经验 获得超5个赞
为什么需要暂停巡回测试?
如果您需要等待 untli 元素可见,请使用:new WebDriverWait(WebDriver driver, String timeToWait).until(ExpectedConditions.visibilityOf(WebElement element));
如果您需要等待 untli 元素可点击使用:new WebDriverWait(WebDriver driver, String timeToWait).until(ExpectedConditions.elementToBeClickable(WebElement element));
如果您需要等待 untli 元素将出现在 DOM 上,请使用:webDriver.manage().timeouts().implicitlyWait(String timeToWait, TimeUnit.SECONDS);
使用 Thread.sleep() 或在指定时间内暂停测试是一种不好的做法。

TA贡献1807条经验 获得超9个赞
如果您打算在不使用任何ExpectedConditions的情况下使用WebDriverWait ,而您需要在页面加载时暂停测试,您还可以使用Java表达式,如下所示: lambda
new WebDriverWait(driver, 20) .until(d -> ((JavascriptExecutor)d).executeScript("return document.readyState") .equals("complete"));

TA贡献1806条经验 获得超5个赞
对 Java + Selenium使用以下方法:
public boolean isPageReady(WebDriver driver){
boolean readyStateComplete = false;
while (!readyStateComplete){
JavascriptExecutor executor = (JavascriptExecutor) driver;
readyStateComplete = executor.executeScript("return document.readyState").equals("complete");
}
return readyStateComplete;
}
对于 C# + 硒:
private void WaitUntilDocumentIsReady(TimeSpan timeout){
var javaScriptExecutor = WebDriver as IJavaScriptExecutor;
var wait = new WebDriverWait(WebDriver, timeout);
// Check if document is ready
Func<IWebDriver, bool> readyCondition = webDriver => javaScriptExecutor
.ExecuteScript("return (document.readyState == 'complete' && jQuery.active == 0)");
wait.Until(readyCondition);
}
添加回答
举报