从selenium webdriver停止浏览器加载
问题描述:
我的硒webdriver进入一个页面,并等待该页面完成加载。如果30秒传递超时并且脚本失败。从selenium webdriver停止浏览器加载
有没有办法让webdriver在30秒后停止页面加载(如在浏览器中按'x')?这将防止我的司机超时。
我正在使用Chromedriver。
答
这是我遇到这个问题的方式。我将使用这种方式,直到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秒内杀死它照顾它。
在它就像一个implicitwait如果您在扩展设置适当的停止加载时间
答
可以在红宝石使用的JavaScript功能window.stop()
和方法Selenium::WebDriver::Driver#execute_script
停止页面加载的方式:
driver.execute_script("window.stop()")
+0
当你进入界面的时候,你不再需要这个调用了。硒API是一个阻塞竞争条件混乱。 更重要的是,即使page_load超时也不会救你,而只是简单地改变问题。如果您访问超时后加载的页面已将控制权还给您,您将停止加载。 – Slotos 2013-11-17 13:01:33
我的经验表明,webdriver真的会等待整个页面完成加载。我正在测试需要相当长时间才能加载的Web应用程序,但webdriver正常工作!另外,我也包含了一个隐含的等待。例如:'driver.manage()。timeouts()。implicitlyWait(20,TimeUnit.SECONDS);' – 2013-04-05 13:44:39
另外,如果你阻止网页完全加载,它**可能会破坏你的测试脚本。 – 2013-04-05 13:46:02
你看过window.stop()使用javascript – StaleElementException 2013-04-05 15:52:04