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


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

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

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

    1. id

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

    Python版本

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

    Java版本

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

    2. name

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

    Python版本

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

    Java版本

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

    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属性值")
    
    • 1
    • 2
    • 3

    Java版本

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

    4. tag_name

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

    Python版本

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

    Java版本

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

    5. link_text

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

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

    Java版本

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

    6. partial_link_text

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

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

    Java版本

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

    7. XPath

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

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

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

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

    Tips:

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

    Python版本

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

    Java版本

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

    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']")
    
    • 1
    • 2
    • 3

    Java版本

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

    总结

    1. id、name、class_name:为元素属性定位
    2. tag_name:为元素标签名称
    3. link_text、partial_link_text:为超链接定位(主要是处理a标签)
    4. XPath:为元素路径定位
    5. CSS:为CSS选择器定位
    6. 万能方法:XPath
  • 相关阅读:
    顺序栈算法库构建
    太赞了!这个神器,让医院的效率翻了10倍!
    数组指针(用几个例子来看看用法)
    Unity-timeline(时间线)
    msvcp140.dll丢失怎样修复?常用的5个修复方法总结
    酷宇宙观点:万物金融化,定义下一个金融服务时代
    HarmonyOS ArkUI实战开发-NAPI数据类型
    Linux下快速确定目标服务器支持哪些协议和密码套件
    11.20 知识总结(choices参数、MVC和MTV的模式、Django与Ajax技术)
    斐波那契数列的矩阵乘法方法
  • 原文地址:https://blog.csdn.net/weixin_42182599/article/details/126059326