专栏首页APP测试Selenium自动化测试-4.By定位及如何确定元素唯一

Selenium自动化测试-4.By定位及如何确定元素唯一

什么是By定位?

(1)有时候我们不知道用哪种方法来定位元素,By定位可以根据实际场景设定定位策略。

(2)By定位和之前学习的8种定位方法差不多,只不过是写法上的不同。

(3)使用By定位,首先需要导入By类:

from selenium.webdriver.common.by import By

语法如下:

定位方式

定位单个元素

id定位

find_element(By.ID,"id")

class定位

find_element(By.CLASS_NAME,"class")

name定位

find_element(By.NAME,"name")

tag定位

find_element(By.TAG_NAME,"tag")

xPath定位

find_element(By.XPATH,"xPath")

Link定位

find_element(By.LINK_TEXT,"text")

PartialLink定位

find_element(By.PARTIAL_LINK_TEXT,"partialText")

CSS选择器定位

find_element(By.CSS_SELECTOR,"css")

我们以百度搜索框为例,看下用By定位是怎么写的。

由此可见,By定位只是把8种定位统一成一个写法。

如果觉得导入By类麻烦,又想把8种写法统一起来,有办法么,当然,我们接下来介绍简化版的:

By.ID = 'id'
By.NAME = 'name'
By.LINK_TEXT = 'link text'
By.PARTIAL_LINK_TEXT = 'partial link text'
By.TAGE_NAME = 'tag name'
By.CLASS_NAME = 'class name'
By.CSS_SELECTOR = 'css selector'
By.XPATH = 'xpath'

用百度搜索框为例,写简化版的定位。

是不是发现,这种写法更方便呢?

定位元素的唯一性

我们在写自动化脚本过程中,会遇到因为元素不是唯一导致定位元素失败的场景,那么我们可以先确定此元素是否唯一,再来定位元素。

一、在源码中查找

以百度搜索框为例:

1.浏览器打开开发者模式(F12),定位到百度搜索框上,发现源码如下:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

2.在css定位中讲过,class="s_ipt"、id="kw",css定位可以写成input.s_ipt,input#kw,

那么快捷键Crtl+F,在开发者工具左下角搜索框输入input.s_ipt 或 input#kw,回车进行搜索:

3.搜索到了会高亮显示,发现只有一条结果,那么我们可以确定这个元素是唯一的,放心的定位了。有时候也会搜索出多个结果,这个时候我们回车键依次查看,元素是否唯一。

二、在控制台查找

在控制台console中确定元素的唯一,主要是使用JavaScript获取HTML DOM元素的方法,语法如下:

id 获取:document.getElementById()
class 获取:document.getElementsByClassName()
name 获取:document.getElementsByName()
tag 获取:document.getElementsByTagName()
css获取:document.querySelector()

1.在开发者工具中,切换到console一栏,如下:

2.以百度浏览器输入框为例:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

其中id="kw",那么可以写成document.getElementById('kw')

在console下输入document.getElementById('kw'),然后回车。

只返回了一条数据,且是我们要查找的元素,那么我们可以确定此元素是唯一的,可以放心的定位了。

本文分享自微信公众号 - ITester软件测试小栈(ITestingA),作者:胖虎喝酸奶

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Selenium自动化测试-3.元素定位(3)

    css定位是通过css选择器进行定位,我们需要了解css选择器的一些知识才能进行css定位,选择器基本语法如下:

    ITester软件测试小栈
  • Selenium自动化测试-3.元素定位(2)

    有时候我们发现网站并没有id、name等属性。那么,我们可以用更高级的定位方法——xpath来定位元素。

    ITester软件测试小栈
  • Selenium自动化测试-文件上传

    进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。

    ITester软件测试小栈
  • 一款AR游戏让残疾和健全儿童一起踢球,实现公平竞争!

    一款名叫iGYM的AR游戏系统,创建了一个具有真正包容性的环境,残疾儿童和健全儿童可以一起玩耍了!

    大数据文摘
  • 『互联网架构』软件架构-API接口安全网关《service变controller》(15)

    PS:代码直接看源码,主要是了解思路,对于性能我建议先别考虑,先实现之后才能谈性能问题,性能问题没有绝对的只有相对的。最主要是签名的获取生成的思路。

    IT故事会
  • 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用第三方组件

    Unity开发中,常常会用到一些第三方组件。本文以实例介绍如何在热更新脚本中使用这些第三方组件。 首先说明几个基本步骤: 第三方组件通常是以dll或者源码方式提...

    用户1687945
  • 大数据-MapReduce排序和序列化

    反序列化 (Deserialization) 是序列化的逆过程. 把字节流转为结构化对象. 当要在进程间传递对象或持久化对象的时候, 就需要序列化对象成字节流,...

    cwl_java
  • GDB 与 LLDB 命令对照表,非常棒

    音视频_李超
  • SAP最佳业务实践:生产订单拆分-工具生产(236)-2生产订单

    CO01创建工具生产的生产订单 直接创建工具生产的生产订单,无需使用 MRP 计划。 角色生产计划员 后勤 ®生产 ®车间现场控制 ®订单 ®创建 ®含物料 ...

    SAP最佳业务实践
  • 海量服务实践:手 Q 游戏春节红包项目设计与总结(上篇)

    本文从后台的角度出发讲述了这个过程和方法,对于关键的前台部分也有所涉及。

    吴逸翔

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动