浅谈Selenium+Webdriver 常用的元素定位方式


Posted in Python onJanuary 13, 2021

假设页面源代码如下:

<input type="text"name="wd" id="kw1" class="input_wd" maxlength="100"style="width:474px;"autocomplete="off">

通过id定位元素:find_element_by_id(“id_vaule”):

browser=webdriver.Firefox()
browser.find_element_by_id("kw1")

通过name定位元素:find_element_by_name(“name_vaule”)

browser.find_element_by_name("wd")

通过tag_name定位元素:find_element_by_tag_name(“tag_name_vaule”)

browser.find_element_by_tag_name("input")#tag_name指标签名称

通过class_name定位元素:find_element_by_class_name(“class_name”)

browser.find_element_by_class_name("input_wd")

通过css定位元素:find_element_by_css_selector();用css定位是比较灵活的

browser.find_element_by_css_selector("input[id=\"kw1\"]")
browser.find_element_by_css_selector("input.input_wd)
browser.find_element_by_css_selector("#kw1)

通过xpath定位元素:find_element_by_xpath(“xpath”)
XPath(XML Path Language)是一种在XML文档中定位元素的语言,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。
假设页面源代码如下:

浅谈Selenium+Webdriver 常用的元素定位方式 

注:元素的xpath绝对路径可通过firebug直接查询,绝对路径以单/开头,从文档的根节点开始解析(如:/html/body/table/tbody/tr[2]/td[2]/div/div[1]/div/div[2]/div[4]/div[3]/div[1]/a[1]),相对路径则以//开头,从文档的任意节点开始解析。

浅谈Selenium+Webdriver 常用的元素定位方式

相对路径的引用写法:

表达式 描述
//input 选取所有input元素
//form[1]/input 选取第一个form元素内的所有直接子input元素
//form[1]//input 选取第一个form元素内的所有子input元素,不论嵌套了多少层
//form[1]/input[last()] 选取第一个form元素内的所有直接子input元素中的最后一个
//form[@id='loginForm'] 选取id属性值为loginForm的form元素
//input[@name='continue'][@type='button'] 选取name属性值为continue且type属性值为button的input元素
//form[@id^='loginForm']/input[4] 选取id以loginForm开头的form元素下第4个input元素
browser.find_element_by_xpath(“//td[contains(text(),'下单编号')]”) 选取text文本为下单编号的td

通过link定位:find_element_by_link_text(“text_vaule”)或者find_element_by_partial_link_text()
适用于页面中出现的文字链接

browser.find_element_by_link_text("登录").click() #点击登录链接
browser.find_element_by_partial_link_text("登").click()#只用了链接中的部分文字

参考资料:

到此这篇关于浅谈Selenium+Webdriver 常用的元素定位方式的文章就介绍到这了,更多相关Selenium Webdriver元素定位内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用django获取用户IP地址的方法
May 11 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
基于python绘制科赫雪花
Jun 22 Python
python使用turtle库绘制时钟
Mar 25 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
对python中的argv和argc使用详解
Dec 15 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python实现知乎高颜值图片爬取
Aug 12 Python
解决python 上传图片限制格式问题
Oct 30 Python
Django封装交互接口代码
Jul 12 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 #Python
基于python+selenium自动健康打卡的实现代码
Jan 13 #Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 #Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 #Python
Python 生成短8位唯一id实战教程
Jan 13 #Python
python uuid生成唯一id或str的最简单案例
Jan 13 #Python
全网最全python库selenium自动化使用详细教程
Jan 12 #Python
You might like
3
2006/10/09 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP答题类应用接口实例
2015/02/09 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python中过滤字符串列表的方法
2020/12/22 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
《在大海中永生》教学反思
2014/02/24 职场文书
数控机床专业自荐信
2014/05/19 职场文书
大跃进口号
2014/06/16 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL