浅谈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 13 Python
Python中 Lambda表达式全面解析
Nov 28 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
基于Django用户认证系统详解
Feb 21 Python
pandas多级分组实现排序的方法
Apr 20 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
django上传文件的三种方式
Apr 29 Python
Python Django项目和应用的创建详解
Nov 27 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 无极分类(递归)实现代码
2010/01/05 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
PDO::exec讲解
2019/01/28 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
Python与shell的3种交互方式介绍
2015/04/11 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python如何判断数独是否合法
2016/09/08 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
python多进程使用函数封装实例
2020/05/02 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
HEMA法国:荷兰原创设计
2019/02/21 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
大学生求职中的自我评价
2013/10/01 职场文书
应届生高等护理求职信
2013/10/12 职场文书
应届生学校辅导员求职信
2013/11/07 职场文书
小学数学国培感言
2014/03/10 职场文书
四群教育工作实施方案
2014/03/26 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
工作所在部门证明
2014/09/21 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
深入理解go slice结构
2021/09/15 Golang