当前位置: 首页 > news >正文

selenium 自动化测试——元素定位

WebDriver 提供了8种元素的定位方法,分别是:

id 定位:find_element(By.ID, "kw")

name 定位:  find_element(By.NAME, "")

tag 定位: find_element(By.TAG, "")

class 定位: find_element(By.CLASS_NAME, "")

link text 定位: find_element(By.LINK_TEXT, "")

partial link 定位: find_element(By.PARTIAL_LINK_TEXT, "")

XPath 定位: find_element(By.XPATH, "")

CSS_selector 定位: find_element(By.CSS_SELECTOR, "")

要使用这些定位方法,首先要了解页面元素的定位

了解html结构

打开一个页面,进入开发者模式,可以看到页面代码,这些html结构有下面这些特征:

1)它们由标签对组成

<html></html>

<body></body>

<div></div>

html、div是标签的标签名

2)标签有各种属性:id、name等

3)标签对之间可以有文本数据

4)标签有层级关系

<html>

        <body>

        </body>

</html>

<div>

        <form>

                <input />

        </form>

<div>

如果把input看做子标签,那么form 就是它的父标签

如何定位元素

如果把页面上的元素看做人,那么在现实世界如何找人对应的人呢?

1)首先,可以通过人本身的属性进行查找,例如他的姓名、身份证号等;对应到页面元素上就是,id、name、class name、tag name。

2)其次,可以通过他的位置进行查找,例如,xx国、xx市、xx区、xx路、xx号;对应页面元素,可以使用XPath和css通过标签层级关系的方式进行查找。

3)最后,还可以借助相关人的属性来查找某人,例如,我可以通过小明爸爸联系到小明;XPath和css同样提供了相似的定位策略来查找元素

1、id定位

HTML规定,id在HTML文档中必须是唯一的,这类似与身份证号,具有唯一性。

2、name定位

HTML规定,name用来指定元素的名称,就像人名一样

3、class定位

HTML规定,calss 用来指元素的类名,用法跟id、name一样

4、tag定位

HTML用tag来定义不同页面的元素,例如,input一般用来定义输入框,a标签用来定义超链接等

标签往往用来定义一类功能,所以一个页面中一个标签就会有很多,所以通常不会用tag来定位元素

5、link定位

link专门用来定位文本链接

6、partial link定位

partial link是link定位的一个补充,有时候文本链接比较长,就可以取部分文本进行定位,只要这个文本可以唯一标识即可

7、XPath 定位

1)绝对路径

就是参考开发者工具所展示的代码层级结构,通过标签名的层级关系来定位元素的绝对路径;如果一个层级下有多个相同的标签名,那么就按照上下顺序确定是第几个,eg div[2]表示当前层级下第2个div标签

2)利用元素属性定位

eg,//input[@id='kw']    //input表示当前某个input标签,[@id='kw'] 表示这个元素的id是kw。也可以使用name 或者 class来定位

如果不想指定具体的标签名,可以使用*代替,eg,//*[@name='wd']

当然,使用的属性也不局限于这些,元素的任意属性都可以使用,只要它能唯一标识这个元素。

3)层级与属性结合定位

如果一个元素本身没有可以唯一标识的属性值,但是它的上一级元素可以唯一标识,,那就可以通过上一级 从而找到 改元素

eg,//span[@id='s_ipt_wr']/input  含义是,找到id是s_ipt_wr的span标签,从而找到它的子标签input

4)使用逻辑运算符定位

如果一个属性无法唯一区分元素,name可以使用逻辑运算符连接多个属性条件来查找元素

eg,//input[@id='kw' and @class='s_ipt']

5)使用contains方法

contains 方法用于匹配一个属性中包含的字符串,eg,//span[contains(@class, 's_ipt_wr')]/input

6)使用text()方法

用于匹配显示文本信息,eg,通过link text 定位文字链接://a[text(),'新闻']

该方法也可以跟contains方法配合使用

8、CSS定位

css是一种语言,用来描述HTML和XML文档的表现。css使用选择器为页面元素绑定属性。css选择器可以比较灵活的选择控件的任意属性,一般情况下,css的定位速度比XPath的定位速度快。

css的常见语法:

选择器例子描述
.class.introclass选择器,选择class为intro的所有元素
#id#firstnameid选择器,选择id为firstname的所有元素
**选择所有元素
elementp选择所有标签p的元素
element>elementdiv>input选择所有父元素为div的所有input元素
element+elementdiv+input选择同一级紧接在div元素后的所有input元素
[attribute=value][target=_blank]选择所有target属性为_blank的元素

使用例如,find_element(By.CSS_SELECTOR,'.s_ipt')

也可以进行组合使用:find_element(By.CSS_SELECTOR,'form#form>span>input#kw')

http://www.lryc.cn/news/159521.html

相关文章:

  • 【JMeter】 二次开发插件开发 Dubbo 接口测试插件浅析
  • 手机SSL证书认证失败是什么意思?
  • PXE网络批量装机(centos7)
  • P1104 生日
  • 计算机网络复习大纲
  • Linux:进程(概念)
  • 智能机器人:打造自动化未来的关键技术
  • 大数据(七):Pandas的基础应用详解(四)
  • 【1day】​万户协同办公平台 ezoffice未授权访问漏洞学习
  • 适配器模式:如何让不兼容的接口变得兼容
  • sentinel熔断报java.lang.reflect.UndeclaredThrowableException
  • 工业4G路由器的户外组网与无人值守场景应用
  • 中移粤港澳大湾区创新研究院、南湖研究院类脑实验室面试(部分)
  • API 自动化测试难点总结与分享
  • 【每日一题】补档 ABC309F - Box in Box | 三维偏序 | 树状数组 | 中等
  • 异步编程 - 13 高性能线程间消息传递库 Disruptor
  • (DXE_DRIVER)PciHostBridge
  • SpringMVC的增删改查的案例
  • golang入门笔记——nginx
  • 最新报告!TikTok 市场小家电大商机,GMV破亿的爆款如何复制?
  • 功能定义-紧急制动系统
  • Map与Set的区别
  • 基于uwb和IMU融合的三维空间定位算法matlab仿真
  • Visual Studio 2019下使用C++与Python进行混合编程——环境配置与C++调用Python API接口
  • STM32F4X RTC
  • [git] 如何克隆仓库,进行项目撰写,并绑定自己的远程仓库
  • 【C++】模拟实现二叉搜索树的增删查改功能
  • Yolov8-pose关键点检测:模型轻量化创新 | ScConv结合c2f | CVPR2023
  • 【洛谷 P1060】[NOIP2006 普及组] 开心的金明 题解(动态规划+01背包)
  • 什么是CI/CD:持续集成与持续交付?(InsCode AI 创作助手)