浅谈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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
详解Numpy中的广播原则/机制
Sep 20 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
python实现AES加密解密
Mar 28 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
pandas 如何分割字符的实现方法
Jul 29 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
numpy np.newaxis 的实用分享
Nov 30 Python
通过代码实例了解Python sys模块
Sep 14 Python
python图片合成的示例
Nov 09 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
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
Knockoutjs快速入门(经典)
2012/12/24 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python if not in 多条件判断代码
2016/09/21 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
Linux机考试题
2015/07/17 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
小学生新年寄语
2014/04/03 职场文书
合作协议书
2014/04/23 职场文书
个人债务授权委托书
2014/10/17 职场文书
专职安全员岗位职责
2015/04/11 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python