浅谈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文件和目录操作方法大全(含实例)
Mar 12 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
通过Python实现自动填写调查问卷
Sep 06 Python
Python模块搜索路径代码详解
Jan 29 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python应用库大全总结
May 30 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
详解python Todo清单实战
Nov 01 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
python全局变量引用与修改过程解析
Jan 07 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+mysql留言本源码
2009/11/11 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
学习php笔记 字符串处理
2010/10/19 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python使用爬虫猜密码
2016/02/19 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
关于Django外键赋值问题详解
2017/08/13 Python
python中的列表与元组的使用
2019/08/08 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
超市中秋节促销方案
2014/03/21 职场文书
员工合理化建议书
2014/05/19 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
乐山大佛导游词
2015/02/02 职场文书
开会通知
2015/04/20 职场文书
高中数学教学反思范文
2016/02/18 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis