从selenium webdriver停止浏览器加载

问题描述:

我的硒webdriver进入一个页面,并等待该页面完成加载。如果30秒传递超时并且脚本失败。从selenium webdriver停止浏览器加载

有没有办法让webdriver在30秒后停止页面加载(如在浏览器中按'x')?这将防止我的司机超时。

我正在使用Chromedriver。

+0

我的经验表明,webdriver真的会等待整个页面完成加载。我正在测试需要相当长时间才能加载的Web应用程序,但webdriver正常工作!另外,我也包含了一个隐含的等待。例如:'driver.manage()。timeouts()。implicitlyWait(20,TimeUnit.SECONDS);' – 2013-04-05 13:44:39

+0

另外,如果你阻止网页完全加载,它**可能会破坏你的测试脚本。 – 2013-04-05 13:46:02

+0

你看过window.stop()使用javascript – StaleElementException 2013-04-05 15:52:04

这是我遇到这个问题的方式。我将使用这种方式,直到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如果您在扩展设置适当的停止加载时间

尝试使用这样的:

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

文档:
Page Load Timeout

此外,作为小费,你不能访问使用硒的webdriver浏览器的原生控制。如果你想这样做,如果你正在使用Linux或AutoIt for windows,请使用如Sikuli这样的工具。

可以在红宝石使用的JavaScript功能window.stop()和方法Selenium::WebDriver::Driver#execute_script停止页面加载的方式:

driver.execute_script("window.stop()") 
+0

当你进入界面的时候,你不再需要这个调用了。硒API是一个阻塞竞争条件混乱。 更重要的是,即使page_load超时也不会救你,而只是简单地改变问题。如果您访问超时后加载的页面已将控制权还给您,您将停止加载。 – Slotos 2013-11-17 13:01:33