selenuim【1】($x(‘xpath语法’)、WebDriverWait())

news2025/2/23 10:09:35

文章目录

  • 初学selenuim记录
    • 1、执行driver = webdriver.Chrome()后很久才打开浏览器
    • 2、浏览器多元素定位 $x(‘xpath语法’)
    • 3、打开浏览器driver.get("网址")执行了很久才开始定位元素:等待
      • (1)driver.set_page_load_timeout(t)
      • (2)WebDriverWait()

初学selenuim记录

1、执行driver = webdriver.Chrome()后很久才打开浏览器

尚未解决,一会很快打开一会很慢打开

2、浏览器多元素定位 $x(‘xpath语法’)

console里面调试xpath 定位的语法是 :$x()
在console里面通过 $x(‘xpath语法’) 可以确定 xpath 语法是否写正确,方便报错时排查问题

# //*[@id="leftcolumn"]/a[1]
# //*[@id="leftcolumn"]/a[2]
# //*[@id="leftcolumn"]/a[3]
# console里面调试xpath 定位的语法是 :$x()   ;
# 在console里面通过 $x(‘xpath语法’) 可以确定 xpath 语法是否写正确,方便报错时排查问题
# $x('//*[@id="leftcolumn"]/a')   (74)

请添加图片描述

3、打开浏览器driver.get(“网址”)执行了很久才开始定位元素:等待

selenium元素操作等方法是需要等待页面所有元素完全加载完成后才开始执行的,所以在页面未完成加载前,代码会一直等待页面加载不继续执行。

(1)driver.set_page_load_timeout(t)

解决办法参考资料:
【selenium】解决页面加载时间过长问题
解决 selenium 加载网页阻塞的问题

  • 设置等待时间:driver.set_page_load_timeout(0.1)
  • 超时即抛出异常:try: except TimeoutException:
  • 超时后执行Javascript停止页面加载:driver.execute_script(‘window.stop()’)
# 设置WebDriver的页面加载时间(set_page_load_timeout),
# set_page_load_timeout(time) 方法可以设置页面的加载超时时间
# 在页面加载超出设置时间时会报错,Timed out receiving message from renderer: time
driver.set_page_load_timeout(5)  # 设置页面加载时间miao
PrintTime.NowTime("控制浏览器,访问页面")
start = time.time()
try:
    driver.get("https://www.runoob.com/html/html-tutorial.html")  # 控制测览器,访问
except TimeoutException:
    # 超时后执行Javascript停止页面加载
    PrintTime.NowTime("Time Out")
    driver.execute_script('window.stop()')
# 显示等待:WebDriverWait()
WebDriverWait(driver, 5, 0.1).until(lambda x: x.find_element_by_id('kw'))
print('the page is loaded')
end = time.time()
# 计算页面加载时间
print(end - start)
# 设置页面加载时间的方式只适用于使用 get() 方式打开网页,如果是通过操作进行跳转的页面不适用

(2)WebDriverWait()

解决办法参考资料:
webdriver中的等待——主要讲解WebDriverWait()

- 显示等待:WebDriverWait()

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。

- 与until()或者until_not()方法结合使用

WebDriverWait(driver,10).until(method,message="")

在设置时间(10s)内,等待后面的条件发生。如果超过设置时间未发生,则抛出异常。在等待期间,每隔一定时间(默认0.5秒),调用until或until_not里的方法,直到它返回True或False.

- 匿名函数:lambda

# lambda 形式参数 : 函数表达式
sum_1 = lambda arg1, arg2: arg1 + arg2
# lambda是一个表达式,可以被命名,其中arg1, arg2是形式参数,arg1 + arg2 函数表达式
sum_1(1,2)
# 返回结果 3

等待时间为10秒,每0.5秒检查一次,然后使用匿名函数等待直到找到id为’kw’的元素

# 设置等待
wait = WebDriverWait(driver,10,0.5)
# 使用匿名函数
# lambda x: x2 表示一个接受参数x并返回x2的匿名函数
wait.until(lambda diver:driver.find_element_by_id('kw'))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1481449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot启动扩展应用:干预优化+加快启动时间(干货典藏版)

一、SpringBoot启动过程干预 Spring Boot启动过程中我们可以实现以下干预工作: 修改Spring Boot默认的配置属性。使用ConfigurationProperties和EnableConfigurationProperties注解,可以获取和修改Spring Boot的配置属性。 加载配置文件。Spring Boot会…

为什么网络安全缺口这么大,还是这么缺网络安全工程师?

为啥网安领域缺口多达300多万人,但网安工程师(白帽黑客)却很少,难道又是砖家在忽悠人??? 主要原因为这三点: 首先是学校的原因,很多学校网络安全课程用的还都是十年前的老教材&…

NVMFS5113PLWFT1G汽车级功率MOSFET 60V 10A/64A满足AEC-Q101标准

AEC-Q101认证标准详细解读: AEC-Q101是一种汽车电子元件可靠性标准,由汽车电子委员会(Automotive Electronics Council,简称AEC)制定。该标准旨在确保在汽车环境中使用的电子元件具有足够的可靠性和耐久性。 AEC-Q10…

C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码

1 双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循…

Docker:开启访问端口 || IDEA开发工具快速部署到服务器

参考文档:Docker开启远程安全访问-腾讯云开发者社区-腾讯云 一、Linux服务器环境 1.1、安装Linux 1.2、安装docker 二、Linux服务器配置docker开放端口 2.1、首先进入docker配置文件打开 /usr/lib/systemd/system/docker.service 或运行以下命令 vi /usr…

1950-2022年各省逐年平均降水量数据

1950-2022年各省逐年平均降水量数据 1、时间:1950-2022年 2、指标:省逐年平均降水量 3、范围:33省(不含澳门) 4、指标解释:逐年平均降水数据是指当年的日降水量的年平均值,不是累计值&#…

matlab工具包

matlab安装yalmip和cplex出错 - 知乎 (zhihu.com) Cplex的安装和使用实例-CSDN博客 一条龙教程:Matlab下使用yalmip(工具箱)cplex(求解器)_使用yalmip和cplex求解器进行建模和求解的步骤如下:-CSDN博客 啊啊啊,好开心&#xff…

C/C++ Zlib库调用Minzip来封装MyZip压缩类

文章目录 1、C/C Zlib库调用Minzip来封装MyZip压缩类1.1、类的功能实现1.1.1、ZIP压缩函数 Compress1.1.2、ZIP解压函数 UnCompress1.1.3、代码如下1.1.4、如何使用类 1、C/C Zlib库调用Minzip来封装MyZip压缩类 Zlib是一个开源的数据压缩库,提供了一种通用的数据压…

JVM调优,调整JVM参数

JDK8之后把-XX:PermSize和-XX:MaxPermGen移除了,取而代之的是XX:MetaspaceSize128m (元空间默认大小) -XX:MaxMetaspaceSize128m (元空间最大大小) JDK 8开始把类的元数据放到本地化的堆内存(native heap)中&#xff0…

[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)

查看保护: 查看ida: 这边其实看反汇编没啥大作用,需要自己动调。 但是前面的绕过strcmp还是要看一下的。 解题: 这里是用linux自带的产生随机数的文件urandom来产生一个随机密码,然后让我们输入密码,用st…

就业班 2401--3.1 Linux Day9--文件查找和压缩

一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…

Linux系统中安装redis+redis后台启动+常见相关配置

1、下载Redis Redis官网:https://redis.io/ 历史版本: http://download.redis.io/releases 2、连接Linux(或者VMwear) 我们安装的是linux版本的redis 打开xftp我们需要先将我们的Redis上传到服务器上 解压到这里 解压的指令 …

Python错题集-4:NameError:(变量名错误)

1问题描述 Traceback (most recent call last): File "D:\pycharm\projects\1-可视化学习\8.3更改小提琴图的中位数、均值、颜色等.py", line 8, in <module> violin_parts plt.violinplot(data, showmediansTrue, showmeansTrue) …

071:vue+cesium 实现下雨效果

第071个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中实现下雨效果,这里使用着色器来实现实例特效。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共120行)着色代码实现心得:专栏目标示例效果

物体检测-系列教程19:YOLOV5 源码解析9 (Focus模块、Model类构造函数)

&#x1f60e;&#x1f60e;&#x1f60e;物体检测-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 13、Focus模块 13.1 基本流程 原始输入图像的格式为&#xff1a;tensor: float32[1,3,64…

msvcr120.dll丢失的解决办法,分享解决文件丢失的问题

msvcr120.dll文件丢失有这三种方法可以解决&#xff0c;学会这三种方法的任何一种&#xff0c;以后再出现dll文件丢失的情况都能很好地解决&#xff0c;第一种方法最为简单。先给大家说说msvcr120.dll文件为什么会丢失&#xff1f;丢失的原因是什么&#xff1f; 一.msvcr120.d…

LabVIEW眼结膜微血管采集管理系统

LabVIEW眼结膜微血管采集管理系统 开发一套基于LabVIEW的全自动眼结膜微血管采集管理系统&#xff0c;以提高眼结膜微血管临床研究的效率。系统集成了自动化图像采集、图像质量优化和规范化数据管理等功能&#xff0c;有效缩短了图像采集时间&#xff0c;提高了图像质量&#…

【LLM RAG】GritLM:统一嵌入和生成的大语言模型浅谈

前言 目前&#xff0c;所有基于文本的语言问题都可以归结为生成问题&#xff0c;并通过单一的LLM来处理。然而&#xff0c;使用嵌入的任务&#xff08;如聚类或检索&#xff09;在这种视角下往往被忽视了。文本嵌入在许多关键的实际应用中扮演着重要角色。如RAG&#xff0c;在…

NGINX 高频面试题及实践总结

NGINX 是一个高性能的开源 Web 服务器和反向代理服务器&#xff0c;被广泛应用于互联网架构中。在面试中&#xff0c;对 NGINX 的相关知识可能会成为考察的重点。下面我们整理了一些常见的 NGINX 面试题及答案&#xff0c;希望对大家在面试前的准备有所帮助。 ## 1. 什么是 NG…

通过跳板机拷贝远程服务器文件

## 背景 在日常开发或者运维中&#xff0c;经常会遇到开发环境与线上环境网络隔离&#xff0c;需要通过跳板机连接的场景&#xff0c;如果需要将目标机器上的定位信息搬迁到开发机做进一步排查时&#xff0c;经常取文件比较费劲&#xff0c;一般操作是将目标文件拷贝到跳板机&…