我的 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这样的工具。