Webdriver常用的元素定位
Webdriver常用定位元素的方法有以下八种:
id、name、class name、tag name、link text、partial link text、xpath、class selector
在Python中,对应的方法为:
- find_element_by_id()
- find_element_by_name()
- find_element_by_class_name()
- find_element_by_tag_name()
- find_element_by_link_text()
- find_element_by_partial_link_text
- find_element_by_xpath()
- find_element_by_css_selector()
备注:元素定位必须确保该定位方式定位出的元素具有唯一性,若定位出多组元素,需对元素进行筛选,或者调整定位方式。
以下定位方式以百度首页为例进行元素定位:
通过Firefox()打开百度首页,通过Firebug(F12)查看百度首页的JS代码,定位到输入框:
<form id="form" class="fm" action="/s" name="f"> <input type="hidden" value="utf-8" name="ie"> <input type="hidden" value="8" name="f"> <input type="hidden" value="0" name="rsv_bp"> <input type="hidden" value="1" name="rsv_idx"> <input type="hidden" value="" name="ch"> <input type="hidden" value="baidu" name="tn"> <input type="hidden" value="" name="bar"> <span class="bg s_ipt_wr quickdelete-wrap"> <span class="soutu-btn"></span> <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"> <a id="quickdelete" class="quickdelete" href="javascript:;" title="清空" style="top: 0px; right: 0px; display: none;"></a> </span> <span class="bg s_btn_wr"> <input id="su" class="bg s_btn" type="submit" value="百度一下">
1、id定位
find_element_by_id("kw")
2、name定位
find_element_by_name("wd")
3、class name定位
find_element_by_class_name("s_ipt")
4、tag name定位
find_element_by_tag_name("input"),因存在多个'input'的tag标签,通过此方式无法定位到百度输入框
5、link text定位
<div id="u1"> <a class="mnav" name="tj_trnuomi" href="http://www.nuomi.com/?cid=002540">糯米</a> <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a> <a class="mnav" name="tj_trhao123" href="http://www.hao123.com">hao123</a> <a class="mnav" name="tj_trmap" href="http://map.baidu.com">地图</a> <a class="mnav" name="tj_trvideo" href="http://v.baidu.com">视频</a> <a class="mnav" name="tj_trtieba" href="http://tieba.baidu.com">贴吧</a>
link用来定位文本链接,通过在百度首页点击'新闻'、'地图'等都可以进入到对应的页面,因此可以用link进行定位:
find_element_by_link_text("新闻")
find_element_by_link_text("地图")
6、partial link text定位
此方式为link text的一个补充,当文件链接过长时,只需截图一部分文本即可:
<a class="mnav" name="tj_trnews" href="http://news.baidu.com">一个很长很长很长的新闻</a>
find_element_by_patial_link_text("很长的新闻")
7、xpath定位(重要)
1)直接通过Firefox的插件Firebug定性定位
2)、通过绝对路径定位
如定位百度首页的输入框,需要一层一层的定位:
driver.find_element_by_xpath('/html/body/div[3]/div/div/div/div/form/span/input')
div[3]表示当前层级下的第三个div标签
这种定位方式比较繁琐,适用性不强
3)、利用元素属性定位
drive.find_element_by_xpath("//input[@id='kw']")
//表示当前页面下的某个目录,也可以用/*表示整个目录,input表示标签名,@id='kw'表示标签名下id='kw'的元素,除了用id定位,也可以使用
输入框的其他元素属性定位。
4)、层级与属性结合定位
<span class="bg s_ipt_wr quickdelete-wrap"><span class="soutu-btn"></span><input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">
该方式可以先定位到上一层级文件,然后再往下定位,比如定位百度输入框,可以先定位到父元素,再往下查找元素
find_element_by_xpath("span[class='bg s_ipt_wr']/input")
5)、使用逻辑运算符定位
若一个属性不能唯一区分,可以用逻辑运算符将多个属性结合起来查找元素
<input id='aa1' class='bb1' name='cc'> <input id='aa1' class='bb2' name='cc'> <input id='aa2' class='bb1' name='cc'>
如上所示,若只是通过单方式去定位元素,元素不唯一,需将元素结合起来一起定位:
find_element_by_xpath("/*[@id='aa1' and @class='bb1']")
8、css selector定位(重要)
css选择器的常见语法
使用方式如下:
1)、通过class定位
find_element_by_css_selector('.s_ipt')
2)、通过id定位
find_element_by_css_selector('#kw')
3)、共拓标签名定位
find_element_by_css_selector('input'),此方式定位不适用
4)、通过属性定位
find_element_by_css_selector('[name="wd"]')
5)、通过父子关系定位
find_element_by_css_selector("form > span"),其中'>'可以用空格代替,为了增加辨识,最好使用'>'
6)、通过组合定位的方式
即通过class或者id一起组合定位。
除此之外,也可以通过By来声明定位,在使用之前需先导入By类
from selenium.webdriver.common.by
find_elements_by.....此时是定位一组元素,比如根据tag name来定位时,可以先定位一组元素,通过find_elements_by_tag_name(' ')[]来进行筛选。
转载于:https://www.cnblogs.com/diaosicai/p/5909660.html
Webdriver常用的元素定位相关推荐
- xpath常用的元素定位方式
xpath常用的元素定位方式 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小.(以下是个人 ...
- selenium webdriver 学习总结-元素定位
webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一 ...
- Android app UI自动化测试 常用的元素定位方法
本文简要介绍了移动端Android APP进行UI自动化测试时,常用到的元素定位方法 目录 前言 一.通过resource-id定位 二.通过class name定位 三.通过accessibilit ...
- 〖Python APP 自动化测试实战篇⑥〗- 实战 - appium 定位手机元素之常用的元素定位方法
万叶集
- appium python实例_Appium Python 常用元素定位方法测试小米计算器实例
常用的元素定位方法 Uiautomator 定位 image.png text属性的方法 #text driver.find_element_by_android_uiautomator('new U ...
- APP自动化基础之元素定位
mobileby 在开始讲元素定位的方式时,我们先来看下appium中元素定位的相关模块:mobileby.py: 在这里可以看到,MobileBy这个类继承了selenium中的元素定位的类:By, ...
- (二) selenium元素定位(上)
元素定位的方式很多,常用的有: find_element_by_id 通过元素的id定位元素 find_element_by_name 通过元素的name定位元素 find_element_by_ta ...
- python学习的一个定位_python学习之——selenium元素定位
web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...
- Web UI自动化测试之元素定位
目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...
- Selenium元素定位方法大全
目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...
最新文章
- 后序遍历的非递归算法python_刷题系列 - Python用非递归实现二叉树后续遍历
- 强大的SPGridView
- 武汉工程大学计算机学院吴云韬,吴兴隆-武汉工程大学计算机科学与工程学院...
- 使用Opencv构建一个简单的图像相似检测器(MSE、SSIM)
- linux在执行时提示无此文件的一个处理办法
- python定义符号常量_python注释、变量、常量的学习
- python 调用文件上传图片简单例子
- 震撼!豆瓣评分9.3,这部纪录片带你感受生命之重!
- 多核分布式队列的实现:“偷”与“自私”的运用(1)
- vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项
- 用Proteus学习51单片机之I2C(IIC)总线
- 字符数组查找-----拉手笔试
- Linux下Oracle进程CPU使用率过高处理方式
- [Project Euler] Problem 48
- 刷机-升级到3.90M33-3的方法
- 弘辽科技:限制店铺流量上涨的七大原因
- 【转】火影10大秘密最终之解(杜撰)
- 性能测试中常见的专业术语:QPS、TPS、并发数、响应时间(RT)、吞吐率和吞吐量【杭州多测师】【杭州多测师_王sir】...
- 谷歌浏览器的timeline工具的使用
- CUDA C/C++ 流和并发
热门文章
- 配置React Native环境
- IOS xib 和storyboard的区别
- !!终于把【库存管理的大致功能完成了!】
- 利用网络媒体搭建自己就业之“桥”——卖糖葫芦北大毕业生谋职报道带来的启示...
- childNodes属性 和 nodeType属性
- 百度同步盘无法登陆,报错155010,对策
- UVA - 10129 Play on Words(欧拉回路)
- 第一次写oracle SQL 两个表链接查询
- ElasticSearch2.1 基于空间位置geo_query距离计算
- linux系统之间互传文件