selenium元素定位方法(单元素操作)

剪纸        2019-06-12   来源:花姐谈往事

在做WEB自动化时,最重要的的就是操作页面上的元素,这就要求我们必修找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素。那么我们怎么来定位这些元素呢?

selenium webdriver提供了如下八种元素定位的方法:

  1. id,  name,  class name,  tag name,

  2. link text,  partial link text,  xpath,  css selector

举例睿江云登录页面,账号框及注册调整下的元素信息

  1. 账号输入框:

  2.    <input _ngcontent-c1="" class="login-input ng-untouched ng-pristine ng-valid" placeholder="请输入账号(手机号码/电子邮箱)" type="text" id="email">

  3. 注册标签:

  4.    <a _ngcontent-c6="" href="#/register" routerlink="/register" name="register">立即注册</a>

1. id定位:find_element_by_id(“id值”)

  1. 如账号输入框下的id值为email:

  2.    find_element_by_id('email').clear() #清空账号框下的text

  3.    find_element_by_id('email').send_keys("test@qq.com") #输入账号值为test@qq.com

2. name定位:find_element_by_name(“name值”)

  1. 也有元素没有id或不唯一,可用如注册标签下的name值对应register:

  2.    find_element_by_name('register').click() #点击立即注册标签操作

3. class定位:元素的类名,find_element_by_class_name(“class值”)

  1. 如账号输入框下的class值为login-input ng-untouched ng-pristine ng-valid:

  2.    find_element_by_class_name('login-input ng-untouched ng-pristine ng-valid').send_keys("test@qq.com") #输入账号值为test@qq.com

4. tag name定位:find_element_by_tag_name(“tag值”)

  1. 拿注册为例:

  2.    find_element_by_tag_name("a").cilck() #点击立即注册标签操作

  3. HTML的本质就是通过tag来定义实现不同的功能,每一个元素本质上也是一个tagtag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。如页面存在大量的<div>,<input>,<a>等tag

5. link text定位:find_element_by_link_text(“text值”)

  1. link专门用来定位文本链接。

  2. 也是拿注册为例a标签的元素为立即注册

  3.    find_element_by_link_text("立即注册").cilck() #点击立即注册标签操作

6. partial link text定位:find_element_by_partial_link_text(”text值”)

  1. partial link text是对link text的补充,有些文本链接会比较长,此时可以取部分文本进行定位。

  2.    find_element_by_partial_link_text("立即注册").cilck() #点击立即注册标签操作

7. css selector 定位:find_element_by_css_selector(“css值”)

  1. 可以理解为css 选择器,我们可以利用元素的任意css元素来进行定位,比如在元素的class属性为多个值时,可以使用 tagname+class的方式来定位

  2. 如账号输入框为inputclass为:login-input ng-untouched ng-pristine ng-valid

  3.    find_element_by_css_selector("input.login-input.ng-untouched.ng-pristine.ng-valid")

8. xpath定位:find_element_by_xpath(“xpath值”)

  1. 有多种定位策略,用FirePath插件自动生成的涵盖以下几种方式

  2. 1)绝对路径定位:

  3.    对于没有idnameclassname不好定位的,这也是最常用的,因为可以通过FirefoxFirePath插件可以方便的获取到xpath

  4. 2)利用元素属性定位:

  5.    find_element_by_xpath(".//*[@id='email']").send_keys("test@qq.com") ,这里是用的id,也可以用元素其他能够唯一标识的属性,不局限于idnameclass这些;*代表的是标签名,不指定时就可以用*代替

  6. 3)层级与属性结合:下图



下期预告

Selenium之多个元素定位


精彩推荐

Selenium玩转各大浏览器

Selenium自动化基本操作

linux安全模块学习之LSM的介绍实现

【技术贴】你不能不了解的PHP日期常用技巧!


相关阅读