selenium 元素定位攻略大全

这篇具有很好参考价值的文章主要介绍了selenium 元素定位攻略大全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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定位
  • 特点: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 元素定位攻略大全,java,前端,html

三、CSS选择器策略汇总

基本介绍:

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

selenium 元素定位攻略大全,java,前端,html

四、元素定位策略总结

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

五、selenium相关总结脑图大全

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

selenium 元素定位攻略大全,java,前端,html


 文章来源地址https://www.toymoban.com/news/detail-848244.html

到了这里,关于selenium 元素定位攻略大全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium元素定位全攻略,让你轻松玩转自动化测试!

    一、什么是元素定位 元素定位就是查找HTML元素的过程,操作页面元素之前,首先要对元素进行定位,所以定位是自动化脚本编写的开始。 通常使用find_element或find_elements方法来定位元素(find_element 使用给定的方法定位和查找一个元素;find_elements 使用给定的方法定位和查找所

    2024年02月04日
    浏览(46)
  • 【UI自动化】selenium元素定位各种框实例操作大全

    Text: 元素是input标签但是不能输入内容 第五个input输入框, disabled 属性被设置为 \\\"true\\\" 。 它被禁用了无法接收用户的输入。 第六个input输入框, readonly 属性指示该元素是否只读 ,如果设置了该属性,表示该元素只读不可编辑。因此,当 readonly 属性存在时,该输入框是不可

    2024年01月18日
    浏览(54)
  • 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 对于自动化测试,尤其是UI的自动化测试。是很多做黑盒功能测试的同

    2024年03月17日
    浏览(67)
  • selenium元素定位,获取某个元素下的所有元素

    例: 想要获取所有的li元素: 结果如下 获取到元素后可以直接进行操作: list_tab[2].click() list_tab[5].send_keys(‘123456’)

    2024年02月16日
    浏览(44)
  • 自学Python 69 Selenium八大元素定位方法(新版BY方法)_selenium定位元素的方法和优缺点

    文章目录 Python Selenium八大元素定位方法(新版BY方法) 前言 一、常用的八种定位方法(新旧对比) 二、查看网页元素 三、八大元素定位示例 1、id定位 2、name定位 3、class定位 4、tag定位 5、link定位 6、partial_link定位 7、xpath定位 8、CSS定位 在学习使用Selenium对网页元素进行定位时

    2024年04月22日
    浏览(64)
  • selenium无法定位元素问题

    问题起因是这样的,我用 selenium 完成一些网页的浏览和操作,通过id索引某个元素的时候提示找不到该元素,报错如下: selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id=“tsn_inner”] 我用的是火狐浏览器(Firefox),不是谷歌浏览器(Chrome),因为今天来写

    2024年01月18日
    浏览(37)
  • Selenium(一):八大元素定位

    find_element() 中 类型为空,默认为By.ID

    2024年04月23日
    浏览(75)
  • Selenium环境+元素定位大法

    selenium 与 webdriver Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器 WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。 使用这套API可以操控浏览器的开启、关闭,打开

    2024年02月12日
    浏览(48)
  • selenium基础定位元素入门

    参考文章链接 4、安装浏览器驱动 谷歌(国内镜像地址) 其他浏览器的话需要自行下载查看,对应自身浏览器的版本进行选择即可 若没发现对应的64位的驱动,用32位的也可以,不影响使用。 5、浏览器驱动安装 下载好驱动压缩包过后,解压得到 chromedriver.exe 驱动程序把他放

    2024年02月11日
    浏览(43)
  • selenium之元素定位

    1:下载最新的浏览器驱动 chrome浏览器驱动下载地址: https://registry.npmmirror.com/binary.html?path=chromedriver/ 查看自己电脑上安装的chrome浏览器版本号,驱动和浏览器版本号需对应。 查看自己电脑浏览器的版本号: ​ 进入驱动下载地址,下载驱动; 比如我的谷歌版本是113.0.5672.1

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包