0


Selenium设置页面超时时间-快速终止页面加载

当使用Selenium爬取一些页面时,有些页面加载速度特别慢,而我们又不需要等待页面完全加载完毕。
此时可以通过

driver.set_page_load_timeout()

来设置页面超时时间。
捕获异常,并执行js脚本

window.stop()

即可实现,代码如下。

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(3)

try:
    driver.get('https://hk.louisvuitton.com/zht-hk/homepage')
    print('finish load ....')
except Exception:
    driver.execute_script('window.stop()')
    print(driver.title)
finally:
    driver.quit()

报错处理:
如果遇到如下,超时错误,可以尝试更新chromedriver驱动。

Selenium分离式启动Webdriver服务和浏览器

Selenium在启动浏览器时实际进行里两步操作,

  1. 通过子进程,使用chromedriver启动一套Webdriver服务
  2. 使用webdriver.Remote()方法连接该服务并发送指令启动浏览器。

在某些情况下如果,你需要分离式启动服务和连接服务的过程,可以使用以下步骤,参考代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service   # 导入chrome的服务启动方法
# 1. 启动服务
service = Service('/usr/local/bin/chromedriver')  # 传入chromedriver路径,实例化一个服务应用
service.start()  # 启动服务

# 2. 连接服务
driver = webdriver.Remote(service.service_url)  # 连接服务

driver.get('https://www.baidu.com/')
driver.quit()

Selenium保存网页为mhtml方法

MHTML即MIME HTML,归档网页,将样式和脚本全部集成到一个文件中。
Chrome Devtools Protcal API中包含了Page.captureSnapshot方法,可以获取到网页的mhtml格式内容。
我们使用Selenium的driver.execute_cdp_cmd()执行该命令后,将结果写入文件即可,示例代码如下。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.qq.com/')

# 1. 执行 Chome 开发工具命令,得到mhtml内容
res = driver.execute_cdp_cmd('Page.captureSnapshot', {})

# 2. 写入文件
with open('qq.mhtml', 'w', newline='') as f:   # 根据5楼的评论,添加newline=''
    f.write(res['data'])

driver.quit()

保存结果,如下图,可以使用浏览器打开。

更多的cdp方法可以参考 (chrome-devtools-protocol)[Chrome DevTools Protocol]

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

标签: selenium python chrome

本文转载自: https://blog.csdn.net/m0_59868866/article/details/130384363
版权归原作者 测试-八戒 所有, 如有侵权,请联系我们删除。

“Selenium设置页面超时时间-快速终止页面加载”的评论:

还没有评论