当前位置: 首页 > news >正文

selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

selenium查找网页如何处理网站资源一直加载失败的情况

在这里插入图片描述

selenium获取一个网页,某个网页的资源卡了很久还没有加载成功,如何放弃这个卡的数据,继续往下走

有2钟方式。通常可以采用下面的方式一来处理这种情况

方式一、WebDriverWait

这种方式对于资源比较多比较复杂的网页比较合适,比如有些图片在国外,一直加载不出来。mail.com就是这样

当网页15秒还没有加载完成,此时代码不管有没有找到元素都会继续往下走,:

  • 如果没有找到元素就会抛异常。
  • 如果找到元素,就会点击

这个时候,如果抛异常。可以多尝试即便,直到不抛异常即可继续往下走

    def ClickElementByXpath(self, brower, xPath):try:brower.implicitly_wait(5)self.insert_text_to_last_line(self.log_pass_file, xPath)result = WebDriverWait(brower, 15).until(EC.presence_of_element_located((By.XPATH, xPath)))result.click()return Trueexcept Exception as e:print('exception timeout!!!')return False

方式二、find_element

这种方式适合资源能快速加载完成的网站。

find_element会等到网站所有的资源全部加载完成后,再继续往下执行,这样的话更稳定,但对于有些网站资源本身很卡,就会一直卡住了,导致卡非常久,最后脚本运行失败。

def ClickElementByXpath(self, brower, xPath):try:brower.implicitly_wait(55)self.insert_text_to_last_line(self.log_pass_file, xPath)#element_input = brower.find_element_by_xpath(xPath)element_input = brower.find_element(By.XPATH, xPath)element_input.click()return Trueexcept Exception as e:print('exception timeout!!!')return False

是否可以设置超时时间 当元素的点击后 ,不等页面加载完成,接着往下走

在Selenium中,可以使用WebDriverset_page_load_timeout方法来设置页面加载的超时时间,但是这个设置通常是应用于整个页面的加载,而不是单个元素的点击操作。如果你希望在点击元素后不等待页面加载完成,而是继续执行后续操作,可以采取以下方法:

使用set_page_load_timeout:你可以设置一个较短的页面加载超时时间,以便在点击元素后等待较短的时间。然后,可以在捕获超时异常后,继续执行后续操作。

from selenium import webdriver
from selenium.common.exceptions import TimeoutException# 创建 WebDriver 实例
driver = webdriver.Chrome()# 设置页面加载超时时间为5秒
driver.set_page_load_timeout(5)try:# 打开网页driver.get("https://example.com")# 找到要点击的元素element = driver.find_element_by_id("my_element_id")# 点击元素element.click()except TimeoutException:print("页面加载超时")# 在这里可以继续执行后续操作,而不用等待页面加载完成# 关闭 WebDriver
driver.quit()
http://www.lryc.cn/news/185286.html

相关文章:

  • 并发工具类库使用的常见问题
  • GD32F10X ----RTC
  • 使用UiPath和AA构建的解决方案 1. 机器人过程自动化入门
  • rust字面量
  • Unix Network Programming Episode 79
  • Cesium展示——wkt 数据绘制
  • 打造完美家庭空间,让生活更加舒适
  • 解决loadDep:omelette: sill install loadAllDepsIntoIdealTree
  • 【深蓝学院】手写VIO第2章--IMU传感器--作业
  • Android多线程学习:线程
  • canvas 入门
  • 建议收藏!混迹职场多年总结出的8大技巧!
  • OpenCV4(C++)—— 视频和摄像头的加载、显示与保存
  • excel功能区(ribbonx)编程笔记6-box的使用
  • oralce配置访问白名单的方法
  • ToBeWritten之让响应团队参与并做好沟通
  • ffmpeg ts 关于av_seek_frame
  • 【C++】set map 的底层封装
  • JavaWeb整体介绍
  • 一些常见分布-正态分布、对数正态分布、伽马分布、卡方分布、t分布、F分布等
  • 科技云报道:押注向量数据库,为时过早?
  • 铭控传感亮相2023国际物联网展,聚焦“多场景物联感知方案”应用
  • 前端demo: 实现对图片进行上传前的压缩功能
  • 计算机网络(文章链接汇总)
  • 黑科技-Android
  • 450. 删除二叉搜索树中的节点
  • python安全工具开发基础
  • 26 docker前后端部署
  • [linux] SFTP文件传输基本命令 --- xshell 直接上传文件
  • Tomcat 多实例