python自动化八大定位元素讲解


Posted in Python onJuly 09, 2021

一、find_element_by_id()

find_element_by_id()
1.从上面定位到的元素属性中,可以看到有个id属性:id=“kw”,这里可以通过它的id属性定位到这个元素。
2.定位到搜索框后,用send_keys()方法,就可以输入文本。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 通过id定位百度输入框,并输入'python'
ss = driver.find_element_by_id('kw')
ss.send_keys('python')

python自动化八大定位元素讲解

二、find_element_by_name()

find_element_by_name()
1.从上面定位到的元素属性中,可以看到有个name属性:name=“wd”,这里可以通过它的name属性单位到这个元素。
说明:这里运行后会报错,说明这个搜索框的name属性不是唯一的,无法通过name属性直接定位到输入框

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 通过name定位百度输入框,并输入'python'
ss = driver.find_element_by_name('wd')
ss.send_keys('python')

python自动化八大定位元素讲解

三、find_element_by_class_name()

find_element_by_class_name()
1.从上面定位到的元素属性中,可以看到有个class属性:class=“s_ipt”,这里可以通过它的class属性定位到这个元素。

from selenium import  webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
#通过class定位百度输入框,并输入'python'
driver.find_element_by_class_name('s_ipt').send_keys('python')

python自动化八大定位元素讲解

四、find_element_by_tag_name()

find_element_by_tag_name()
1.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input。
2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。以下例子,仅供参考和理解,运行肯定报错。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
#通过tag(标签)定位百度输入框,并输入'python'
ss = driver.find_element_by_tag_name('input')
ss.send_keys('python')

python自动化八大定位元素讲解

五、find_element_by_link_text()

1.定位百度页面上"hao123"这个按钮

python自动化八大定位元素讲解

查看页面元素:

<a class="mnav" target="_blank" href="http://www.hao123.com" rel="external nofollow" >hao123</a>

2.从元素属性可以分析出,有个href = "http://www.hao123.com

说明它是个超链接,对于这种元素,可以用以下方法:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
#通过tlink(超链接)定位百度输入框,并点击
driver.find_element_by_link_name('hao123').click()

六、find_element_by_partial_link_text()

1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了

2.如“hao123”,只需输入“ao123”也可以定位到

from selenium import webdriver
driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
#通过partial_link定位百度输入框,并点击(partial_link是一种模糊匹配的方式)
driver.find_element_by_partial_link_name('hao123').click()

七、find_element_by_xpath()

1.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决。
2.xpath是一种路径语言,跟上面的定位原理不太一样,首先第一步要先学会查看一个元素的xpath。

  • 对于谷歌浏览器来说,有自己 的xpath解析工具:鼠标移到需要查看的html源码上,右击
  • 选择copycopy
  • xpath,就是源码的xpath路径

python自动化八大定位元素讲解

from selenium import webdriver
driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
#通过xpath地址定位百度输入框,并点击(xpath地址即为赋值过来的地址)
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[2]').click()

八、find_element_by_css_selector()

1.css是另外一种语法,比xpath更为简洁,但是不太好理解。这里先学会如何用工具查看,后续的教程再深入讲解

对于谷歌浏览器来说,同样有自己 的css解析工具:鼠标移到需要查看的html源码上,右击

选择copy

copy selector,就是源码的css路径

python自动化八大定位元素讲解

from selenium import webdriver
driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
#通过css地址定位百度输入框,并点击
driver.find_element_by_xpath('#s-top-left > a:nth-child(2)').click()

总结:

python自动化八大定位元素讲解

 

到此这篇关于python自动化八大定位元素讲解的文章就介绍到这了,更多相关python自动化八大定位元素内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的一只从百度开始不断搜索的小爬虫
Aug 13 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
Python 数据结构之队列的实现
Jan 22 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
Pycharm中如何关掉python console
Oct 27 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
python基础之类属性和实例属性
Oct 24 Python
python实现简单聊天功能
Python re.sub 反向引用的实现
Jul 07 #Python
Python制作一个随机抽奖小工具的实现
Python 数据科学 Matplotlib图库详解
Python3中最常用的5种线程锁实例总结
Jul 07 #Python
python实现简单的聊天小程序
python获取对象信息的实例详解
Jul 07 #Python
You might like
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
python实现读Excel写入.txt的方法
2018/04/29 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
pytorch permute维度转换方法
2018/12/14 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
大学生职业生涯规划书前言
2014/01/09 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
主办会计岗位职责
2014/03/13 职场文书
房产买卖委托公证书
2014/04/04 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
我爱我家教学反思
2014/05/01 职场文书
刑事起诉书范文
2015/05/19 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
React如何创建组件
2021/06/27 Javascript
PHP获取学生成绩的方法
2021/11/17 PHP