Selenium WebDriver加载页面时间过长

14

我使用PhantomJS作为我的webdriver。有时候加载网页需要太长时间,但我不知道原因。

import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = 'Mozilla/5.0 (Windows NT 10.0;  WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36'
driver = webdriver.PhantomJS(service_args=['--load-images=no'], desired_capabilities=dcap)
t=time.time()
driver.get('http://www.tibetculture.net/2012zyzy/zx/201509/t20150915_3939844.html')
print 'Time consuming:', time.time() - t

这个页面加载大约花了86秒的时间。在浏览器中,网页可以在几秒钟内加载完成,但是我不知道为什么webdriver PhantomJS需要这么长的时间。它出了什么问题吗?


我建议查看这个答案:https://dev59.com/UVcP5IYBdhLWcg3wXI7Z#44504132 - navid
1个回答

26

有一个正在连续运行的"pending"脚本。我将设置页面加载超时,通过发出window.stop()来处理TimeoutException

from selenium.common.exceptions import TimeoutException

t = time.time()
driver.set_page_load_timeout(10)

try:
    driver.get('http://www.tibetculture.net/2012zyzy/zx/201509/t20150915_3939844.html')
except TimeoutException:
    driver.execute_script("window.stop();")
print('Time consuming:', time.time() - t)

print(driver.find_element_by_id("NewsTitle").text)

打印新闻标题(证明您现在可以定位元素并在页面上执行操作):
Time consuming: 10.590633869171143
让藏医药走出雪域高原

它真的很有效,我可以从我的程序中找到所有元素。那么,下载“待定”脚本的时间是浪费了吗?如果有超时,那么停止下载和渲染,只返回已经呈现的网页,对吧?我不知道是否理解了重点。非常感谢! - SimmerChan
@SimmerChan 是的,这个解决方案的意思就是使用 window.stop() 来停止待处理的请求。 - alecxe
如何在超时异常后进行刷新? - Hamid Zandi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接