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

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

三、CSS选择器策略汇总

基本介绍:

  • CSS(Cascading Style Sheets)是一种语言,它用来描述HTML元素的显示样式;
  • 在CSS中,选择器是一种模式,用于选择需要添加样式的元素;
  • 在Selenium中也可以使用这种选择器来定位元素。
  • 在Selenium中推荐使用CSS定位(前提得会😂),因为它比XPath定位速度要快。关于selenium 元素定位的浅度解析,Python,程序员,软件测试,java,前端,html

 

四、元素定位策略总结

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

五、selenium相关总结脑图大全

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

关于selenium 元素定位的浅度解析,Python,程序员,软件测试,java,前端,html

 

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

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

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

相关文章

  • Python学习笔记——selenium定位iframe和元素(快速定位)

    Python学习笔记——selenium定位iframe和元素(快速定位)

    在使用selenium过程,发现定位iframe、元素比较困难,所以制作一个辅助小工具。  当前界面没有,调整driver位置 1.Xpath定位  2,.其他定位方式 获取元素、操作失败重复操作,直至操作成功。

    2024年02月13日
    浏览(13)
  • 2.Python中selenium八大元素定位

    2.Python中selenium八大元素定位

    目录 如何进行元素定位 浏览器开发者工具介绍 一、id属性定位 二、name定位 三、class_name定位 四、tag_name定位 五、link_text定位 六、partail_link_text定位 七、xpath定位 7.1 选取节点 7.2 谓语 7.3 轴 7.4 函数 7.5 逻辑运算 八、css定位 8.1 css的定义 8.2 css定位策略 1.id选择器 2.class选择器

    2024年02月04日
    浏览(11)
  • Python Selenium 八大元素定位方法(下)

    Python Selenium 八大元素定位方法(下)

    今天我们来学习UI自动化中,剩余五个元素定位方法:tag_name、link_text、partial_link_text、Xpath、css_selector 以tag_name元素定位为例 HTML是由不同的标签组成的,每个标签都是指的同一类,所以用tag定位效率低下,一般不建议使用。 以link_text元素定位为例 1、使用F12,定位到含有链接

    2024年02月12日
    浏览(11)
  • selenium--面试官问元素定位不到怎么办?工作中还在为元素定位不到而烦恼?看这一文就够了--内附解析跟代码解决案例

    selenium--面试官问元素定位不到怎么办?工作中还在为元素定位不到而烦恼?看这一文就够了--内附解析跟代码解决案例

    from selenium import webdriver fox = webdriver.Firefox() fox.get(“https://qzone.qq.com/”) fox.find_element_by_id(‘switcher_plogin’).click() fox.find_element_by_id(‘u’).send_keys(‘清安无别事’) fox.find_element_by_id(‘p’).send_keys(‘欢迎入坑’) fox.quit() 看到此处代码,如果你想直接去定位,得到的就是: 所以

    2024年04月25日
    浏览(10)
  • 【Python中Selenium元素定位的各种方法】

    【Python中Selenium元素定位的各种方法】

    1、元素定位操作: 2、创建浏览器驱动操作,导入By模块: 3、ID元素定位 4、name元素定位 5、class_name:class属性元素定位 6、tag_name:标签名元素定位 7、link_text:超链接标签元素定位 8、partial_link_text:超链接标签(模糊)元素定位 9、xpath:路径(绝对路径、相对路径)元素定位

    2024年02月19日
    浏览(11)
  • selenium--面试官问元素定位不到怎么办?工作中还在为元素定位不到而烦恼?看这一文就够了--内附解析跟代码解决案例(1)

    selenium--面试官问元素定位不到怎么办?工作中还在为元素定位不到而烦恼?看这一文就够了--内附解析跟代码解决案例(1)

    fox = webdriver.Firefox() fox.get(“https://www.baidu.com”) fox.find_element_by_id(“kw”).send_keys(‘清安无别事’) fox.find_element_by_id(“su”).click() fox.find_element_by_xpath(‘/html/body/div[1]/div[4]/div[1]/div[3]/div[3]/h3/a/em’).click() sleep(2) fox.quit() 这里举例我想定位2021年01月_清欢无别事_这条超链接内容并

    2024年04月08日
    浏览(11)
  • 【web自动化】selenium+python八大元素定位

    【web自动化】selenium+python八大元素定位

    推荐:b站软件测试老白 注意点 1.有id才能能使用id定位 2.id不能重复 通过百度页面,演示如何查找id确定id是否重复,其他方式定位也可以这样搜索 代码如下(示例): 如果有多个class_name,可以使用 find_elements 和取下标的方式 例如:打开哔哩哔哩页面,有番剧,电影等等,他

    2024年01月21日
    浏览(14)
  • Python+selenium自动化元素定位防踩坑

    Python+selenium自动化元素定位防踩坑

    在自动化UI测试过程中常常会在元素定位阶段就踩坑,碰到困扰已久的问题。 以下是个人整理元素定位报错原因和解决方法。 踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 异常原因:

    2024年02月06日
    浏览(13)
  • python安装selenium(Firefox和Chrome)+元素定位

    python安装selenium(Firefox和Chrome)+元素定位

    一、下载地址 谷歌浏览器chromedriver驱动下载地址: https://chromedriver.storage.googleapis.com/index.html 火狐浏览器geckodriver驱动下载地址: https://registry.npmmirror.com/binary.html?path=geckodriver/ 二、谷歌浏览器配置: 将下载好的chromedriver驱动解压后放在python文件夹中 三、火狐浏览器: 将下载

    2024年02月06日
    浏览(10)
  • 【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

    【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

    Selenium模拟用户在浏览器中的操作,比如点击按钮。在某些场景下,我们需要 模拟鼠标悬停的操作,来触发一些隐藏的元素。 本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停,即 当光标与其名称表示的元素重叠时触发的事件,在Selenium中将键盘鼠标操作封装在Action Cha

    2024年04月10日
    浏览(8)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包