当前位置:   article > 正文

selenium:如何解决打开网页加载时间过长问题_selenium设置超时时间

selenium设置超时时间

大佬们有没有遇到过一种情况,selenium打开网页后,即使页面已经加载出来可以操作了,但是浏览器地址栏旁边还是在转圈,后面的代码也一直无法往下执行。其实大部分原因是由于静态文件加载太慢或者外链的CDN挂了导致的。

一、设置WebDriver的页面加载超时时间 

设置超时时间后页面不必全部加载完成就可以执行下一步

  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. # 设置页面加载时间
  4. driver.set_page_load_timeout(5)
  5. start = time.time()
  6. try:
  7. driver.get(driver.get('http://www.baidu.com'))
  8. except: # 捕获timeout异常
  9. driver.execute_script('window.stop()') # 执行Javascript来停止页面加载 window.stop()
  10. end = time.time()
  11. # 页面加载所需时间
  12. print(end-start)
  13. el = driver.find_element("name", value='wd')
  14. #对元素输入文本
  15. el.send_keys('这是我的第一次尝试')
  16. #找到搜索按钮并点击一次
  17. driver.find_element("id", value='su').click()

二、修改WebDriver的页面加载策略

        默认情况下,SeleniumWebDriver在加载页面时,根据正常的加载策略,就是把get地址的页面及所有静态资源都下载完(如css、图片、js等)。

  1. normal (默认):所有内容加载完成,包括文件、css、js等。

  2. eager:等待初始HTML文档完全加载和解析,并放弃css、图像和子框架的加载。

  3. none:仅等待初始页面下载即可操作。

页面加载策略为normal 

  1. import time
  2. from selenium import webdriver
  3. start = time.time()
  4. driver = webdriver.Chrome()
  5. driver.get('http://www.baidu.com')
  6. end = time.time()
  7. print(end-start)
  8. el = driver.find_element("name", value='wd')
  9. #对元素输入文本
  10. el.send_keys('这是我的第一次尝试')
  11. #找到搜索按钮并点击一次
  12. driver.find_element("id", value='su').click()
  13. >>>15.416865825653076

页面加载策略为eager

  1. import time
  2. from selenium import webdriver
  3. options = webdriver.ChromeOptions()
  4. # 配置页面加载策略
  5. options.page_load_strategy = 'eager'
  6. driver = webdriver.Chrome(options=options)
  7. start = time.time()
  8. driver = webdriver.Chrome()
  9. driver.get('http://www.baidu.com')
  10. end = time.time()
  11. print(end-start)
  12. el = driver.find_element("name", value='wd')
  13. #对元素输入文本
  14. el.send_keys('这是我的第一次尝试')
  15. #找到搜索按钮并点击一次
  16. driver.find_element("id", value='su').click()
  17. >>>4.887652158737183

页面加载策略为none

  1. import time
  2. from selenium import webdriver
  3. options = webdriver.ChromeOptions()
  4. # 配置页面加载策略
  5. options.page_load_strategy = 'none'
  6. driver = webdriver.Chrome(options=options)
  7. start = time.time()
  8. driver = webdriver.Chrome()
  9. driver.get('http://www.baidu.com')
  10. end = time.time()
  11. print(end-start)
  12. el = driver.find_element("name", value='wd')
  13. #对元素输入文本
  14. el.send_keys('这是我的第一次尝试')
  15. #找到搜索按钮并点击一次
  16. driver.find_element("id", value='su').click()
  17. >>>3.415907144546509

几种方案各有千秋,大佬们请根据实际情况自行选择最优方案。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/898803
推荐阅读
相关标签
  

闽ICP备14008679号