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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python采用Django开发自己的博客系统
Sep 29 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python中常见的异常总结
Feb 20 Python
python list是否包含另一个list所有元素的实例
May 04 Python
python多线程http压力测试脚本
Jun 25 Python
Django中和时区相关的安全问题详解
Oct 12 Python
python 爬虫如何实现百度翻译
Nov 16 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
pandas中DataFrame检测重复值的实现
May 26 Python
python实现简单聊天功能
Python re.sub 反向引用的实现
Jul 07 #Python
Python制作一个随机抽奖小工具的实现
Python 数据科学 Matplotlib图库详解
Python3中最常用的5种线程锁实例总结
Jul 07 #Python
python实现简单的聊天小程序
python获取对象信息的实例详解
Jul 07 #Python
You might like
第十二节 类的自动加载 [12]
2006/10/09 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
浅谈Python中的作用域规则和闭包
2018/03/20 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
职高毕业生自我鉴定
2013/10/21 职场文书
外国语学院毕业生自荐信
2013/10/28 职场文书
检举信的格式及范文
2014/04/04 职场文书
卫生标语大全
2014/06/21 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL