Selenium教程:一文了解Selenium的元素查找

注:本文内容基于selenium 3.141.0

Selenium的元素查找指的是使用Selenium WebDriver库中提供的方法来定位和操作网页上的各种元素,如文本框、按钮、下拉框、链接等。通过元素查找,可以在自动化测试中模拟用户操作,比如输入文本、点击按钮、选择下拉选项等。

Selenium提供了多种元素查找的方法,可以根据元素的特征和位置来进行定位。常用的元素查找方法包括:

  1. 通过ID查找元素
  2. 通过名称查找元素
  3. 通过类名查找元素
  4. 通过标签名查找元素
  5. 通过链接文本查找元素
  6. 通过XPath表达式查找元素
  7. 通过CSS选择器查找元素

使用这些方法,可以根据元素的唯一特征或者在页面中的相对位置来定位元素,从而实现对元素的操作。例如,可以通过find_element_by_idfind_element_by_namefind_element_by_xpath等方法来查找单个元素,或者通过find_elements_by_namefind_elements_by_xpath等方法来查找多个符合条件的元素。


1.通过ID查找元素:

element = driver.find_element_by_id("element_id")

2.通过名称查找元素:

element = driver.find_element_by_name("element_name")

3.通过类名查找元素:

element = driver.find_element_by_class_name("element_class")

4.通过标签名查找元素:

element = driver.find_element_by_tag_name("element_tag")

5.通过链接文本查找元素:

element = driver.find_element_by_link_text("link_text")

6.通过部分链接文本查找元素:

element = driver.find_element_by_partial_link_text("partial_link_text")

7.通过XPath表达式查找元素:

element = driver.find_element_by_xpath("xpath_expression")

XPath(XML Path Language)是一种用于在XML文档中定位元素的查询语言。在Selenium中,XPath常用于定位网页上的元素。

XPath语法包含以下主要部分:

  1. 节点选择器

    • nodename:选择指定节点名的所有节点。
    • *:选择所有节点。
    • @attribute:选择具有指定属性的所有节点。
  2. 路径表达式

    • /:从根节点开始选择。
    • //:选择匹配的任何位置的节点。
    • .:选择当前节点。
    • ..:选择当前节点的父节点。
  3. 谓语(Predicate)

    • [expression]:用于筛选节点,只选择满足条件的节点。
    • 可以使用运算符(如=!=<>contains()等)和逻辑运算符(如andornot)进行条件判断。
  4. 轴(Axis)

    • ancestor:选择所有祖先节点。
    • parent:选择父节点。
    • child:选择子节点。
    • following-sibling:选择当前节点之后的所有同级节点。
    • preceding-sibling:选择当前节点之前的所有同级节点。

以下是一些XPath示例:

  • //div:选择文档中的所有<div>元素。
  • //input[@id='username']:选择具有id属性为'username'的所有<input>元素。
  • //a[contains(@href, 'example.com')]:选择链接的href属性中包含'example.com'的所有<a>元素。
  • //table//tr[position()>2]:选择表格中第3行及之后的所有<tr>元素。

8.通过CSS选择器查找元素:

element = driver.find_element_by_css_selector("css_selector")

以下是八种常见的元素定位方式的优缺点:

  1. 通过ID定位元素

    • 优点:唯一性高,速度快。
    • 缺点:部分网页可能没有id属性,不适用于所有情况。
  2. 通过名称定位元素

    • 优点:简单易用。
    • 缺点:名称不唯一时定位困难。
  3. 通过类名定位元素

    • 优点:CSS类通常在页面上是唯一的。
    • 缺点:对于包含多个类名的元素定位可能不够精确。
  4. 通过标签名定位元素

    • 优点:查找速度较快。
    • 缺点:标签名通常不是唯一的。
  5. 通过链接文本定位元素

    • 优点:可以定位到链接元素。
    • 缺点:对于链接文本较长或包含特殊字符时不方便定位。
  6. 通过部分链接文本定位元素

    • 优点:可以模糊匹配链接文本。
    • 缺点:可能匹配到多个元素,定位不够精确。
  7. 通过XPath表达式定位元素

    • 优点:灵活强大,可以定位任何元素。
    • 缺点:XPath相对复杂,定位表达式较长。
  8. 通过CSS选择器定位元素

    • 优点:定位速度快,支持丰富的选择器语法。
    • 缺点:选择器语法可能较复杂,不够直观。

根据实际情况和页面结构的不同,选择合适的定位方式很重要。通常建议优先使用ID和类名进行定位,如果无法唯一定位,则可考虑使用XPath或CSS选择器。


以下是一个使用Selenium在百度网站搜索框中输入关键词并点击搜索按钮的完整代码示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 启动浏览器
driver = webdriver.Chrome()# 打开百度网站
driver.get("https://www.baidu.com")# 定位搜索框并输入关键词
search_box = driver.find_element_by_id("kw")  # 百度搜索框的id为"kw"
search_box.send_keys("Selenium WebDriver")# 模拟按下回车键进行搜索
search_box.send_keys(Keys.RETURN)# 或者点击搜索按钮进行搜索(可选)
# search_button = driver.find_element_by_id("su")  # 百度搜索按钮的id为"su"
# search_button.click()# 等待搜索结果加载
driver.implicitly_wait(10)  # 等待最多10秒钟,可根据实际情况调整# 输出当前页面标题和URL
print("当前页面标题:", driver.title)
print("当前页面URL:", driver.current_url)# 关闭浏览器
driver.quit()

 在这个示例中,我们使用Selenium打开百度网站,在搜索框中输入关键词"Selenium WebDriver",然后模拟按下回车键进行搜索。你也可以选择点击搜索按钮进行搜索。最后,输出当前页面的标题和URL,并关闭浏览器。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 内存函数

目录 前言 一、memcpy()函数 二、memmove()函数 三、memset函数 四、memcmp()函数 总结 前言 在C语言中内存是我们用来存储数据的地址&#xff0c;今天我们来讲一下C语言中常用的内存函数。 一、memcpy()函数 memcpy()函数与我们之前讲的strcpy()函数类似&#xff0c;只…

分布式调用与高并发处理(二)| Dubbo

文章目录 Dubbo概念_什么是分布式系统单机架构集群架构分布式架构单机、集群和分布式的区别 Dubbo概念_什么是RPCRPC两个作用&#xff1a;常见 RPC 技术和框架&#xff1a; Dubbo概念_简介Dubbo能做什么Dubbo支持的协议 Dubbo概念_核心组件注册中心Registry服务提供者Provider服…

AI - 决策树模型

&#x1f914;决策树算法 决策树的思想来源可以追溯到古希腊时期&#xff0c;当时的哲学家们就已经开始使用类似于决策树的图形来表示逻辑推理过程。然而&#xff0c;决策树作为一种科学的决策分析工具&#xff0c;其发展主要发生在20世纪。 在20世纪50年代&#xff0c;美国兰…

Xinstall助力web唤起iOS,打破平台壁垒,实现无缝跳转

在移动互联网时代&#xff0c;web与App之间的跳转已成为用户日常使用中不可或缺的一部分。然而&#xff0c;对于iOS系统的用户来说&#xff0c;web唤起App的过程往往充满了挑战和不便。这时&#xff0c;Xinstall作为一款专业的移动开发者服务工具&#xff0c;为开发者们提供了解…

RPC通信原理(一)

RPC通信原理 RPC的概念 如果现在我有一个电商项目&#xff0c;用户要查询订单&#xff0c;自然而然是通过Service接口来调用订单的实现类。 我们把用户模块和订单模块都放在一起&#xff0c;打包成一个war包&#xff0c;然后再tomcat上运行&#xff0c;tomcat占有一个进程&am…

Transformer代码从零解读【Pytorch官方版本】

文章目录 1、Transformer大致有3大应用2、Transformer的整体结构图3、如何处理batch-size句子长度不一致问题4、MultiHeadAttention&#xff08;多头注意力机制&#xff09;5、前馈神经网络6、Encoder中的输入masked7、完整代码补充知识&#xff1a; 1、Transformer大致有3大应…

分享一下自己总结的7万多字java面试笔记和一些面试视频,简历啥的,已大厂上岸

分享一下自己总结的7万多字java面试笔记和一些面试视频&#xff0c;简历啥的&#xff0c;已大厂上岸 自己总结的面试简历资料&#xff1a;https://pan.quark.cn/s/8b602fe53b58 文章目录 SSMspringspring 的优点&#xff1f;IoC和AOP的理解**Bean 的生命周期****列举一些重要…

关于工业机器人的四大保养事项

工业机器人的保养周期和注意事项会根据具体机器人的型号、使用环境和工作负荷等因素而有所不同。一般来说&#xff0c;以下是一些常见的保养周期和注意事项&#xff1a; 工业机器人保养注意事项如下&#xff1a; 一、常规保养 1.清洁与除尘&#xff1a;定期清洁机器人的外壳、…

C#,图论与图算法,双连通图(Biconnected Components of Graph)的算法与源代码

1 双连通图(Biconnected Components of Graph) 如果任意两个顶点之间有两条顶点不相交的路径,则无向图称为双连通图。在双连通图中,有一个通过任意两个顶点的简单循环。 按照约定,由边连接的两个节点构成双连通图,但这并不验证上述属性。对于具有两个以上顶点的图,必须…

音视频如何快速转二维码?在线生成音视频活码的教程

音频文件的二维码制作步骤是什么样的呢&#xff1f;扫描二维码来展现内容是很流行的一种方式&#xff0c;基本上日常生活中经常会用的图片、音频、视频等都可以使用生成二维码的方式。现在很多的幼儿园或者学校会录制孩子的音频或者视频内容用来展示&#xff0c;那么二维码制作…

Linux——ELK日志分析系统

实验环境 虚拟机三台CentOS 7.9&#xff0c; 组件包 elasticsearch-5.5.0.rpm elasticsearch-head.tar.gz node-v8.2.1.tar.gz phantomjs-2.1.1-linux-x86_64.tar.bz2 logstash-5.5.1.rpm kibana-5.5.1-x86_64.rpm 初始…

安装gpu-torch(已经成功)

### &#xff01;&#xff01;&#xff01;直接使用pip安装&#xff0c;不要使用conda安装&#xff0c;使用conda安装总是会安装成CPU版本。 1.第一次尝试 之前按照官网安装pytorch的命令进行安装&#xff0c;结果安装出来是cpu版本的&#xff0c;试过https://blog.csdn.net/…