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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
简单谈谈python中的语句和语法
Aug 10 Python
python正则中最短匹配实现代码
Jan 16 Python
Python工程师面试必备25条知识点
Jan 17 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
Python Gitlab Api 使用方法
Aug 28 Python
python datetime中strptime用法详解
Aug 29 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
如何基于Python实现数字类型转换
Feb 07 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python 提高开发效率的5个小技巧
Oct 19 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易混淆函数的区别及用法汇总
2014/11/22 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
js加解密 脚本解密
2008/02/22 Javascript
js判断变量是否空值的代码
2008/10/26 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
Python实现telnet服务器的方法
2015/07/10 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Pytorch之finetune使用详解
2020/01/18 Python
python代码如何注释
2020/06/01 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
矿泉水广告词
2014/03/20 职场文书
信仰心得体会
2014/09/05 职场文书
新郎新娘答谢词
2015/01/04 职场文书
地道战观后感2000字
2015/06/04 职场文书
就业证明函
2015/06/17 职场文书
社区服务理念口号
2015/12/25 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL