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随机生成数模块random使用实例
Apr 13 Python
Python找出9个连续的空闲端口
Feb 01 Python
python Django框架实现自定义表单提交
Mar 25 Python
python web基础之加载静态文件实例
Mar 20 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
python 数据提取及拆分的实现代码
Aug 26 Python
django框架两个使用模板实例
Dec 11 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
基于python连接oracle导并出数据文件
Apr 28 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 Python
Python基本知识点总结
Apr 07 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
国内咖啡文化
2021/03/03 咖啡文化
在WIN98下以apache模块方式安装php
2006/10/09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
PHP网站备份程序代码分享
2011/06/10 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python pygame实现2048游戏
2018/11/20 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
采购部经理岗位职责
2014/02/10 职场文书
环保口号大全
2014/06/12 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript