欢迎光临散文网 会员登陆 & 注册

selenium4自动化测试八大定位高级用法

2023-04-24 09:39 作者:大牛测试技术  | 我要投稿

        Selenium提供了8种不同的定位方法,分别通过id、name、xpath、class name、tag name、link_text、partial link text及css selector进行定位。在Selenium4.0版本中,定位方法find_element_by_xx被丢弃,采用find_element()方法。具体的使用细节将在本节中详细介绍。

  • id定位

    HTML Tag的id属性值是唯一的,故不存在根据id定位多个元素的情况。以“login.html”页面用户名输入“大牛测试”为例。用户名 id属性值为“dntest”,如下图1-1所示:

图1-1

“find_element”方法来定位用户名文本框,需传入两个参数,By.ID即通过ID定位元素,另一个参数为id值,代码如下:

  • name 定位

    上图1-1所示,其name属性值为“daniu”,方法By.NAME表示通过name来定位,代码如下:

  • class定位

    以login.html密码框为例,如图1-1所示,其class属性值为“passwd”,在“find_element”方法中参数使用By.CLASS_NAME,另一参数为“passwd”,代码如下:

注意:上例中,用户名也有class属性“f-text phone-input”,因有空格不能直接使用,可以取部分f-text或phone-input进行定位,代码如下:

  • link_text定位

       link_text是以超链接全部名字作为关键字来定位元素的。以login.html页面“上传资料页面”超链接为例如图1-2所示 :

图1-2

代码如下:

  • partial_link_text定位

      即用超链接文字的部分文本来定位元素,类似数据库的模糊查询。以“上传资料页面”超链接为例,取“上传资料”便可执行,即取超链接全部文本的一个子集。代码如下:

  • css定位

    CSS定位的优点是速度快、语法简洁。图1-3中的内容出自W3School的CSS参考手册。CSS定位的选择器有十几种,在本节中主要介绍几种比较常用的选择器

图1-3

以class选择器为例,实现用户名框输入“大牛测试”,代码如下:

由上可知id定位语法结构为:#id名。实现在用户名框输入“大牛测试”,代码如下:

通过常规的标签名称来定位,如用户名框标签为“input”,在标签内部又设置了属性值为“name=wd’”,测试代码如下。


  • xpath 定位

1.XPath简介

XPath是XML Path语言的缩写,是一种用来确定XML文档中某部分位置的语言。它在XML文档中通过元素名和属性进行搜索,主要用途是在XML文档中寻找节点。XPath定位比CSS定位有更大的灵活性。XPath可以向前搜索也可以向后搜索,而CSS定位只能向前搜索,但是XPath定位的速度比CSS慢一些。

XPath语言包含根节点、元素、属性、文本、处理指令、命名空间等。以下文本为XML实例文档,用于演示XML的各种节点类型,便于理解XPath

其中<animalList>为文档节点,也是根节点;<name>为元素节点;type=“mammal”为属性节点。

节点之间的关系:

父节点。每个元素都有一个父节点,如上面的XML示例中,animal元素是namesize,以及action元素的父节点。

子节点。与父节点相反,这里不再赘述。

兄弟节点,有些也叫同胞节点。它表示拥有相同父节点的节点。如上代码所示,namesizeaction元素都是同胞节点。

先辈节点。它是指某节点的父节点,或者父节点的父节点,以此类推。如上代码所示,name元素节点的先辈节点有animalanimalList

后代节点。它表示某节点的子节点、子节点的子节点,以此类推。如上代码所示,animalList元素节点的后代节点有animalname等。

2.XPath语法

XPath来自于XML,又由于HTML语言的语法和XML比较接近,故XPath也支持定位HTML页面元素。下面以login.html登录为例,采用绝对路径与相对路径演示。网页元素如图1-4所示

图1-4

(1) 绝对路径即完整的路径,如login.html页面登录框,绝对路径为“html/body/form/input[1]”,完整代码如下:

(2) 相对路径方式,以相对路径 以//开头,从任何元素节点解析,“*”号表示通配符皮匹配任何元素节点,“.”为选取当前节点,“..” 选取当前节点的父节点,实现在login.html页面登录框输入“测试”,代码如下

除以上常规方法定位,部分复杂控件需要采用模糊定位,用 starts-with与contains

starat-with以某个属性值开始,如login.html用户名为例,id为dntest,可取部分id如dnt代码如下:

contains包含某个属性值,如login.html用户名为例,可取部分id如nte,代码如下:

  • tag_name定位

tag_name定位即通过标签名称定位,常用于复合定位,如图1-5所示,定位标签“form”并打印标签属性值“name”。

图1-5


selenium4自动化测试八大定位高级用法的评论 (共 条)

分享到微博请遵守国家法律