selenium 元素定位总结篇

本贴最后更新于 521 天前,其中的信息可能已经物是人非

一、By类单一属性定位

元素名称 描述 Webdriver API
id id属性 driver.find_element(By.ID, "id属性值")
name name属性 driver.find_element(By.NAME, "name属性值")
class_name class属性 driver.find_element(By.CLASS_NAME, "class_name属性值")
tag_name 标签名 driver.find_element(By.TAG_NAME, "标签名")
link_text a元素的文本内容-精准匹配 driver.find_element(By.LINK_TEXT, "超链接全部文本值")
partial_link_text a元素的文本内容-模糊匹配 driver.find_element(By.PARTIAL_LINK_TEXT, "超链接部分文本值")
  1. id定位
  1. name定位

注意:当页面内有多个元素的特征值是相同的时候,定位元素的方法执行时,默认只会获取第一个符合要求的特征对应的元素。

因此,定位元素时需要尽量保证使用的特征值能够代表目标元素在当前页面的唯一性。

  1. class name 定位

比如:class="panel-body has-table scrollbar-hover",只能使用其中一个值panel-body或者has-table或者scrollbar-hover,中间的空格代表间隔符,表示class有多个属性。

  1. tag name 定位
  1. link test 定位
  1. partial link text定位

二、xpath定位表达式汇总

2.1 xpath术语

2.1.1 节点

  1. XPath中的节点主要有以下几种类型:
    • 元素节点 - 表示XML或HTML中的一个元素(也就是标签),如<book>
    • 属性节点 - 表示元素的一个属性,如<book category="computer">中的category属性。
    • 文本节点 - 表示元素或属性中的文本内容,如<book>Java</book>中的Java
    • 文档节点 - 表示整个文档,作为文档树的根节点。
    • 命名空间节点 - 表示XML命名空间,通常是文档的子节点。
  2. 定位节点的方式:
    • 通过路径表达式,如book节点://book
    • 通过节点关系,如parent、child
    • 通过顺序关系,如following-sibling

2.1.2 基本值

基本值(Atomic Value)指的是不能再分解的单个值,XML中的一些基本值包括:

基本值就是XML文档中的终端节点,不再包含子元素。

例如:

<person>
  <name>John</name>
  <age>30</age>
</person>

上述XML中:

基本值有以下特点:

2.2 节点关系

2.2.1 父(Parent)

每个元素以及属性都有一个父。

在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

2.2.2 子(Children)

元素节点可有零个、一个或多个子。

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

2.2.3 同胞(Sibling)

拥有相同的父的节点

在下面的例子中,title、author、year 以及 price 元素都是同胞:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

2.2.4 先辈(Ancestor)

某节点的父、父的父,等等。

在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

2.2.5 后代(Descendant)

某个节点的子,子的子,等等。

在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:

<bookstore>

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

2.3 xpath定位表达式汇总

image.png

三、CSS选择器策略汇总

基本介绍:

image.png

四、元素定位策略总结

五、selenium相关总结脑图大全

doge huaji 附带捎上一份selenium相关总结脑图

selenium相关总结.png

3 操作
xiaodingdang 在 2023-07-19 11:00:23 更新了该帖
xiaodingdang 在 2023-07-19 10:50:30 更新了该帖
xiaodingdang 在 2023-07-17 22:39:07 更新了该帖
回帖
请输入回帖内容 ...