2014-04-16 147 views
3

我有一个Selenium Webdriver脚本,用python编写,打开一个url;Selenium Webdriver等待网址?

def GotToURL(self): 

    #Go to url 
    driver.get("http://someurl.com") 

    #Prints url once it is finished loading 
    print driver.current_url 

问题是,每15个中有1个,网址不会完成加载。所以,我要补充的是,尝试运行步骤

print driver.current_url 

10秒一步,如果它不能正常工作,请重新启动脚本。

任何任何想法?

运行硒的webdriver和OSX

+0

这不像您指出的那么简单。 URL改变的事实并不表示**页面**已经完成加载。 – Arran

+0

感谢您的回复@Arran。我很害怕。我面临的问题是,在页面最终加载之前,脚本的其余部分将不会继续。如果我点击浏览器上的顶部按钮,脚本将继续正常工作,但必须这样做会挫败测试自动化的目的。 – user1799835

+0

您的页面可能会添加一些AJAX调用添加的内容,需要一些额外的时间才能完成。您需要根据需要设置一些明确的[wait](http://selenium-python.readthedocs.org/en/latest/waits.html#waits)。 – Javier

回答

2

我能想到的最好的选择Python 2.7版是使用Explicit and Implicit Waits

例如,您可以定义驾驶员这样

driver = webdriver.Ie() #note that I'm using IE 
driver.set_page_load_timeout(10) #set the max to 10s 

,然后把你的行动,一试,除了语句,指定一个TimeoutException。这样做的意思是,如果页面加载时间超过10秒,驱动程序必须抛出异常,然后才能定义如何处理这种情况。

+0

感谢您的回复。 不幸的是,我陷入了解决方案的第一个障碍,因为我似乎无法正常工作。 '从selenium.common.exceptions导入TimeoutException异常 DRIVER.set_page_load_timeout(5) DRIVER.get(http://url.com) 尝试: 打印DRIVER.current_url 除了TimeoutException异常: 打印“页面加载失败' 加载超时时,“页面加载失败”未被打印。 取而代之的是, 'selenium.common.exceptions.TimeoutException:消息:u'Timed等待页面加载。' 任何想法?我做什么明显错了吗? – user1799835

+0

@ user1799835不客气。在获取引发异常的过程中,您必须将该行插入try范围内才能获得所需内容。 – 5agado

相关问题