喜欢软测的小北葵

喜欢软测的小北葵

一、By类单一属性定位

  1. id定位
  • 特点:id定位 是通过元素的id属性来定位元素的;在整个HTML文档中 id 属性必须是唯一的。(APP中id属性不唯一)
  • 前提:元素有id属性
  • 说明:当目标元素存在 id属性值时,优先使用 id 方法定位元素,前提id不是动态变化的。
  1. name定位
  • 特点:name定位是根据元素name属性来定位的;在HTML文档中 name 的属性值是可以重复的
  1. class name 定位
  • 特点:class_name定位是根据元素class属性值来定位元素;HTML通过使用class来定义元素的样式,class属性值可以有多个。
  • 前提:元素有class属性
  • 注意:在使用 class name 方法时,如果**class**有多个属性值,只能使用其中的一个。

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

  1. tag name 定位
  • 特点:tag_name定位 是通过**标签名**来定位的;HTML本质就是由不同的tag组成,每一种标签一般在页面中存在多个,所以不方便进行精确定位,一般很少使用。
  • 说明:如果存在多个相同的标签,则返回符合条件的 第一个标签
  • 由于标签名的重复性过高,一般做精确定位时,都不会选择tag_name
  1. link test 定位
  • 特点:link_text定位只针对超链接元素< a>标签</a >,精确匹配),通过超链接的文本内容来定位元素的(超链接文本必须是唯一,不能有空格),并且需要输入超链接的全部文本信息。
  • 案例:element = driver.find_elementt("link test", '访问新浪网站')
  1. partial link text定位
  • 特点:只针对超链接元素,需要输入超链接的部分文本信息。
  • 案例:element = driver.find_element("partial link text", '访问新浪')
  • 说明:partial link text:a标签通过【模糊匹配】超链接文本,定位元素超链接文本必须是唯一。

二、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中的一些基本值包括:

  • 字符串(String)
  • 整数(Integer)
  • 小数(Decimal)
  • 布尔值(Boolean)
  • 日期时间(Date/Time)

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

例如:

  

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

上述XML中:

  • name和age元素中的"John"和"30"就是基本值
  • 而person不是基本值,因为它还包含子元素

基本值有以下特点:

  • 不可再分解为更小单元
  • 没有属性或子元素
  • 包含实际数据

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定位表达式汇总

selenium 元素定位攻略大全-LMLPHP

三、CSS选择器策略汇总

基本介绍:

  • CSS(Cascading Style Sheets)是一种语言,它用来描述HTML元素的显示样式;
  • 在CSS中,选择器是一种模式,用于选择需要添加样式的元素;
  • 在Selenium中也可以使用这种选择器来定位元素。
  • 在Selenium中推荐使用CSS定位(前提得会😂),因为它比XPath定位速度要快。

selenium 元素定位攻略大全-LMLPHP

四、元素定位策略总结

  • 如果元素有明确idnameclass属性时,使用对应的基本定位方法。
  • 如果没有idnameclass属性时,或idnameclass属性是动态/不唯一的时候,使用XPathcss_selector定位。
  • 定位页面超链接使用link_textpartial_link_text定位
  • 可使用XPathcss_selector定位的时候,优先使用css_selectorcss_selector定位的速度和效率比Xpath高。
  • 没有最好的,只有最精简的,怎么简单怎么来。

五、selenium相关总结脑图大全

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

selenium 元素定位攻略大全-LMLPHP


 

03-20 08:49