前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium自动化测试-4.By定位及如何确定元素唯一

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

作者头像
ITester软件测试小栈
发布2019-10-17 03:15:05
8230
发布2019-10-17 03:15:05
举报
文章被收录于专栏:全栈测试全栈测试

什么是By定位?

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

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

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

代码语言:javascript
复制
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种写法统一起来,有办法么,当然,我们接下来介绍简化版的:

代码语言:javascript
复制
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),定位到百度搜索框上,发现源码如下:

代码语言:javascript
复制
<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元素的方法,语法如下:

代码语言:javascript
复制
id 获取:document.getElementById()
class 获取:document.getElementsByClassName()
name 获取:document.getElementsByName()
tag 获取:document.getElementsByTagName()
css获取:document.querySelector()

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

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

代码语言:javascript
复制
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ITester软件测试小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是By定位?
  • 定位元素的唯一性
    • 一、在源码中查找
      • 二、在控制台查找
      相关产品与服务
      云开发 CLI 工具
      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档