【发布时间】:2017-10-11 05:13:38
【问题描述】:
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_page_load_timeout(7)
def urlOpen(url):
try:
driver.get(url)
print driver.current_url
except:
return
然后我有 URL 列表并调用上述方法。
if __name__ == "__main__":
urls = ['http://motahari.ir/', 'http://facebook.com', 'http://google.com']
# It doesn't print anything
# urls = ['http://facebook.com', 'http://google.com', 'http://motahari.ir/']
# This prints https://www.facebook.com/ https://www.google.co.kr/?gfe_rd=cr&dcr=0&ei=3bfdWdzWAYvR8geelrqQAw&gws_rd=ssl
for url in urls:
urlOpen(url)
问题是当网站“http://motahari.ir/”抛出超时异常时,网站“http://facebook.com”和“http://google.com”总是抛出超时异常。
浏览器一直在等待“motahari.ir/”加载。但循环只是继续(它没有打开 'facebook.com' 但等待'motahari.ir/')并继续抛出超时异常
初始化 webdriver 实例需要很长时间,因此我将其从方法中提取出来,我认为这是导致问题的原因。那么,每当出现超时异常时,我是否应该始终重新初始化 webdriver 实例?如何? (由于我在函数外初始化了驱动,所以不能在except中重新初始化)
【问题讨论】:
-
你为什么要在 5 秒内加载一个网页......这很难......
-
我认为这不应该发生。一切似乎都是正确的,(除了你还没有导入
By)这可能只是因为你的互联网很慢或者网站的服务器很慢...... -
“但是循环一直在继续(它没有打开'b.net',而是等待'a.com')并不断抛出超时异常” 't,它实际上正在加载 b.net,它只是没有显示在顶部。我想让你知道 selenium 中的链接需要前缀“https://”或“http://”才能工作。
-
对不起,我有一个添加 http 的方法,但为了简单起见,我省略了它。我稍微更改了代码。请你看一下好吗?