为了账号安全,请及时绑定邮箱和手机立即绑定

Selenium等到文档准备好了

Selenium等到文档准备好了

繁花不似锦 2019-09-20 14:30:48
任何人都可以让我如何让硒等到页面完全加载的时候?我想要一些通用的东西,我知道我可以配置WebDriverWait并调用类似'find'的东西让它等待,但我不会那么远。我只需要测试页面加载成功并转到下一页进行测试。我在.net中找到了一些东西但是无法在java中使用它...IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));有人想过吗?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

试试这段代码:


  driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

上面的代码将等待最多10秒的页面加载。如果页面加载超过它将抛出的时间TimeoutException。你抓住了例外,满足了你的需求。我不确定是否在抛出异常后退出页面加载。我还没有尝试这个代码。想要尝试一下。


这是一个隐含的等待。如果你设置了一次它将具有范围,直到Web驱动程序实例销毁。


有关更多信息。


查看完整回答
反对 回复 2019-09-20
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这是您给出的示例的可用Java版本:


void waitForLoad(WebDriver driver) {

    new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd ->

            ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));

}

示例对于c#:


public static void WaitForLoad(IWebDriver driver, int timeoutSec = 15)

{

  IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

  WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, timeoutSec));

  wait.Until(wd => js.ExecuteScript("return document.readyState").ToString() == "complete");

}


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信