我的 selenium webdriver 转到一个页面并等待该页面完成加载。如果 30 秒通过它超时并且脚本失败。
无论如何让网络驱动程序在 30 秒后停止页面加载(比如按浏览器上的“x”)?这将防止我的驱动程序超时。
我正在使用 Chrome 驱动程序。
我的 selenium webdriver 转到一个页面并等待该页面完成加载。如果 30 秒通过它超时并且脚本失败。
无论如何让网络驱动程序在 30 秒后停止页面加载(比如按浏览器上的“x”)?这将防止我的驱动程序超时。
我正在使用 Chrome 驱动程序。
这就是我遇到这个问题的方式。我会一直使用这种方式,直到 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 秒内杀死它来处理它。
如果您在扩展程序中设置正确的停止加载时间,它的工作方式类似于隐式等待
您可以使用JavaScript函数和方法在Ruby中停止页面加载:window.stop()
Selenium::WebDriver::Driver#execute_script
driver.execute_script("window.stop()")
尝试使用这个:
driver.manage().timeouts().pageLoadTimeout();
文档:
页面加载超时
另外,作为提示,您不能使用 Selenium WebDriver 访问浏览器的本机控件。如果你想这样做,如果你使用 Linux 或Windows 版AutoIt ,请使用像Sikuli这样的工具。