八大元素定位方法(Python/Java)

许多不切实际的鼓励,大都是来自酒肉朋友或是远方亲戚。

小编最近在学习Web 自动化测试,所以趁热打铁,整理下相关的知识点,今天主要分享的是八大元素定位方法,无论是移动端还是web端,八大定位方法是共用的。本篇文章还分别提供了两种版本(python、java)的元素定位方式,一种Python版本提供了两种方式,因为在selenium中八种元素定位的底层实现均为

driver.find_element(By.xxx,"value")

1. id

id定位是通过元素的id属性来定位元素,html规定id属性在整个html文档中必须是唯一的。

Python版本

element = driver.find_element_by_id("id值")
或者
element = driver.find_element(By.ID,"id值")

Java版本

element = driver.findElement(By.id("id值"))

2. name

name定位就是根据元素属性来定位,html文档中name的属性值是可以重复的。
如果name有多个属性值,默认使用第一个。

Python版本

element = driver.find_element_by_name("name值")
或者
element = driver.find_element(By.NAME,"name值")

Java版本

element = driver.findElement(By.name("name值"))

3.class_Name

class_Name定位就是根据元素class属性值来定位元素,html通过使用class来定位元素的样式。如果class有多个属性值,默认返回第一个。
Python版本

element = driver.find_element_by_class_name("页面元素的Class属性值")
或者
driver.find_element(By.CLASS_NAME,"页面元素的Class属性值")

Java版本

element = driver.findElement(By.className("页面元素的Class属性值"))

4. tag_name

tag_name 定位是通过标签名来定位,html本质上是由不同的tag组成,每一种标签一般在页面会存在多个,所以不方便进行精准定位,一般很少用。

Python版本

element = driver.find_element_by_tag_name("标签名")
或者
element = driver.find_element(By.TAG_NAME,"标签名")

Java版本

element = driver.findElement(By.tagName("标签名"))

5. link_text

只能定位超链接标签,可以精准定位a标签的全部文本内容。
Python版本

element = driver.find_element_by_link_text("链接的全部文字")
或者
element = driver.find_element(By.LINK_TEXT,"链接的全部文字")

Java版本

element = driver.findElement(By.LinkText("链接的全部文字"))

6. partial_link_text

只能定位超链接标签,输入部分链接文字即可。
Python版本

driver.find_element_by_partial_link_text("链接的部分文字")
或者
element = driver.find_element(By.PARTIAL_LINK_TEXT,"链接的部分文字")

Java版本

element = driver.findElement(By.partialLinkText(("链接的部分文字"))

7. XPath

XPath 为XML Path的简称,是一门在XML文档中查找元素信息的语言,HTML可以看做是XML的一种表现。XPath主要是通过元素的路径来定位,其中,路径又分为绝对路径、相对路径(XML是一种标记语言,用于数据的存储和传递。)
绝对路径:从最外层元素到指定元素之间所有经过元素层级的路径

绝对路径以 html 跟节点开始,使用 / 来分割元素层级;绝对路径对页面结构要求比较严格,万一开发改了路径并且没有告诉你,所以不建议使用。
	例如:/html/body/div/p[1]/input

相对路径:匹配任意层级的元素,不限制元素的位置。

相对路径以 // 开始
例如,//input 或者//*、//input[@password='密码A']

Tips:

1. 一般使用指定标签名称,不实用*代替,效率比较慢
2. 无论是绝对路径还是相对路径,/ 后面必须为元素的名称或者 *

Python版本

element = driver.find_element_by_xpath("//*[@id='username")
或者
element = driver.find_element(By.XPATH,"//*[@id='username")

Java版本

element = driver.findElement(By.xpath("//*[@id='username"))

8. CSS

css定位就是通过css选择器工具进行定位,css是一种标记语言,用于控制数据的样式。在selenium中推荐使用CSS定位,因为它比Xpath定位速度要快

Python版本

driver.find_element_by_css_selector("[name='password']")
或者
element = driver.find_element(By.CSS_SELECTOR,"[name='password']")

Java版本

element = driver.findElement(By.cssSelector("css定位表达式"))

总结

  1. id、name、class_name:为元素属性定位
  2. tag_name:为元素标签名称
  3. link_text、partial_link_text:为超链接定位(主要是处理a标签)
  4. XPath:为元素路径定位
  5. CSS:为CSS选择器定位
  6. 万能方法:XPath

猜你喜欢

转载自blog.csdn.net/weixin_42182599/article/details/126059326