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编辑器WingIDE的使用经验总结
Aug 31 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python实现生成密码字典的方法示例
Sep 02 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
Python实现播放和录制声音的功能
Aug 12 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
selenium如何定位span元素的实现
Jan 13 Python
关于Python使用turtle库画任意图的问题
Apr 01 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 版获取重定向后的地址(代码)
2013/06/26 PHP
php+highchats生成动态统计图
2014/05/21 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
Python实现数据库并行读取和写入实例
2017/06/09 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
给我一面国旗 python帮你实现
2019/09/30 Python
django实现类似触发器的功能
2019/11/15 Python
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
上课说话检讨书500字
2014/11/01 职场文书
税务会计岗位职责
2015/04/02 职场文书
全国助残日活动总结
2015/05/11 职场文书
预备党员党支部意见
2015/06/02 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书