浅谈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使用Supervisor来管理进程的方法
May 28 Python
Python 加密的实例详解
Oct 09 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
python找出因数与质因数的方法
Jul 25 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
pycharm 对代码做静态检查操作
Jun 09 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
python 实用工具状态机transitions
Nov 21 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内核之php in array
2015/11/10 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python基础教程之自定义函数介绍
2014/08/29 Python
Python解惑之整数比较详解
2017/04/24 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
在Python中COM口的调用方法
2019/07/03 Python
Python:slice与indices的用法
2019/11/25 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
红旗团支部事迹材料
2014/01/27 职场文书
商场促销活动策划方案
2014/08/18 职场文书
典型事迹材料范文
2014/12/29 职场文书
个人总结与自我评价
2015/02/14 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis