Python selenium页面加载慢超时的解决方案


Posted in Python onMarch 18, 2020

开发环境:

win10-64  python2.7.16  chrome77

from selenium import webdriver
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('http://全部加载完成超级慢的网站')

user = 'abc'
pwd = '123

driver.find_element_by_id('email').send_keys(user)
driver.find_element_by_id('pass').send_keys(pwd)

先看这样一段代码

当执行了get以后,除非网站全部加载完成,否则你只能乖乖等,什么都不能干,这是整个程序是阻塞的,get不完就别想进行下面操作

这个等待可能是5分钟或者更久

其实5秒钟的时候界面就已经打开了,然后他还在加载些什么js,img,等待速度超慢的,但是网页人工是可以操作

那么有没有什么办法呢,网上找了一通,给出了很多解决方案

首先是这货(下面是我复制的):

from selenium import webdriver
driver=webdriver.Chrome()
driver.set_page_load_timeout(5)
driver.set_script_timeout(5)#这两种设置都进行才有效
try:
  d.get(s)
except:
  d.execute_script('window.stop()')#这句话好像没什么软用

可以在页面停止加载后继续操作了

driver.set_page_load_timeout(5)这玩意一设置,没问题,5秒后网页确实停止了,但是driver也死了,不管运行什么都是timeout,还说try一下,driver是死透了,只能重新来
不知道是selenium更新了还是他自己没测试还是chrome更新了,现在这么设置就是找死的

注意:使用set_page_load_timeout时候,当页面未加载出任何东西的时候(往往是html源码未加载),因为超时而停止,会导致driver失效,
后面的driver都不能操作,所以超时设置应该至少保证页面内容加载出来一部分,设置超时不宜过短,如下图在页面此种状态下停止加载后driver失效。

不错,是有人也说了,不能设置太短,会失效,但是我可以说,你设置5分钟照样失效,只要超时一次,driver就完蛋,直接翻车

接下来是另一个方法

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time

driver = webdriver.Chrome()
class button():
  def __call__(self, driver):
    if driver.find_element_by_id('js_love_url'):
      return True
    else:
      return False 

driver.implicitly_wait(60)
time_start = time.time()
driver.get('https://www.163.com/')

# driver.find_element_by_id('js_love_url').click()
WebDriverWait(driver,2,0.5).until(button()) 
time_end = time.time()
print('access time is : ', time_end - time_start)
time.sleep(2)
driver.quit()

用WebDriverWait进行操作,不过我测试下来,driver.get()不执行完,下面的代码根本就不会执行,所以还是不行

找了各种方法,各种操作,都失败了,总算今天找到了正确的方法

原理非常简单:driver.get()这个操作,改成不阻塞的就行了,这样打开网页就操作完成了,不需要等他加载

下面我可以直接等待需要的元素出现即可进行操作

配置也是很简单

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

#get直接返回,不再等待界面加载完成
desired_capabilities = DesiredCapabilities.CHROME
desired_capabilities["pageLoadStrategy"] = "none"

driver = webdriver.Chrome(executable_path='chromedriver.exe')

配置一个参数,就是页面加载策略,系统默认是等待,就是等他加载完,直接设置成none,就是不等待,这样就是get操作完后直接就是结束了

到此这篇关于Python selenium页面加载慢超时的解决方案的文章就介绍到这了,更多相关Python selenium加载慢内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python轻松查到删除自己的微信好友
Jan 10 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
python实现批量修改服务器密码的方法
Aug 13 Python
基于python实现从尾到头打印链表
Nov 02 Python
django中间键重定向实例方法
Nov 10 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
Python参数传递对象的引用原理解析
May 22 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
Python Selenium 设置元素等待的三种方式
Mar 18 #Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 #Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 #Python
Python中remove漏删和索引越界问题的解决
Mar 18 #Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 #Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 #Python
PyTorch加载自己的数据集实例详解
Mar 18 #Python
You might like
php学习之变量的使用
2011/05/29 PHP
php字符串截取函数用法分析
2014/11/25 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Sanic框架基于类的视图用法示例
2018/07/18 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
基于python实现模拟数据结构模型
2020/06/12 Python
法国在线药房:DoctiPharma
2020/10/21 全球购物
opencv实现图像几何变换
2021/03/24 Python
建筑设计师岗位职责
2013/11/18 职场文书
校园达人秀策划书
2014/01/12 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
南京青奥会口号
2014/06/12 职场文书
三严三实对照检查材料
2014/08/25 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书