浅谈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程序设计入门(5)类的使用简介
Jun 16 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
python之消除前缀重命名的方法
Oct 21 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
Django的models中on_delete参数详解
Jul 16 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
python监控nginx端口和进程状态
Sep 06 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 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正则
2006/07/07 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
php实现Mysql简易操作类
2015/10/11 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
早上好问候语大全
2015/11/10 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
Redis的字符串是如何实现的
2021/10/24 Redis
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers