9

我的 selenium webdriver 转到一个页面并等待该页面完成加载。如果 30 秒通过它超时并且脚本失败。

无论如何让网络驱动程序在 30 秒后停止页面加载(比如按浏览器上的“x”)?这将防止我的驱动程序超时。

我正在使用 Chrome 驱动程序。

4

3 回答 3

4

这就是我遇到这个问题的方式。我会一直使用这种方式,直到 chrome 支持pageload.

我在 chrome 中安装了一个名为 Stop load 的扩展程序,并设置了 5 秒停止加载。

然后我使用默认设置启动了我的驱动程序 -

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir="+System.getProperty("user.home")+"\\AppData\\Local\\Google\\Chrome\\User Data"));
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
driver = new ChromeDriver(capabilities); 

如果 chrome 中的页面在 5 秒内未加载,您的扩展程序将通过在 5 秒内杀死它来处理它。

如果您在扩展程序中设置正确的停止加载时间,它的工作方式类似于隐式等待

于 2013-04-05T18:24:30.957 回答
3

您可以使用JavaScript函数和方法在Ruby中停止页面加载:window.stop()Selenium::WebDriver::Driver#execute_script

driver.execute_script("window.stop()")
于 2013-09-08T17:35:21.883 回答
1

尝试使用这个:

   driver.manage().timeouts().pageLoadTimeout();

文档:
页面加载超时

另外,作为提示,您不能使用 Selenium WebDriver 访问浏览器的本机控件。如果你想这样做,如果你使用 Linux 或Windows 版AutoIt ,请使用像Sikuli这样的工具。

于 2013-04-05T13:51:35.703 回答