2012-07-12 133 views
11

我正在使用python api将一些Selenium RC测试转换为Selenium WebDriver。在Selenium WebDriver中,我注意到driver.get('http://...')似乎在继续之前等待整个页面加载。有没有办法不等待页面加载?我请求的某些页面有很多外部资源可能需要很长时间才能加载。我宁愿等待DOM上的元素出现,而不是等待所有的东西加载。正因为如此,我的一些测试似乎在WebDriver中花费了两倍的时间。Selenium WebDriver在不等待页面加载的情况下转到页面

+1

@Slanec你们俩都很棒。我的艰苦搜索已经达成了一个幸福的结论。 – 2012-11-19 23:58:24

回答

13

是的,没有。硒2.24.1,the support for this is only in Firefox - you have to run it in a special "mode"的:

FirefoxProfile fp = new FirefoxProfile(); 
fp.setPreference("webdriver.load.strategy", "unstable"); 
WebDriver driver = new FirefoxDriver(fp); 

你甚至可以设置the timeout if you want to。这种方法在除Firefox之外的任何浏览器中都失败,并且在没有不稳定策略的情况下在火狐浏览器中不做任何事情:

driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); 
+1

谢谢。完全回答了我的问题。 – Jackson 2012-07-13 14:16:18

+0

此外,当您在预期页面上轮询对象时,如果使用findElements()而不是findElement(),则可以通过使用类似'if findElements()= 0 keep trying'的内容来避免空指针。 – djangofan 2013-02-04 23:32:34

+0

什么是页面加载超时的Python等效代码? – 2015-08-28 11:37:28