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的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
opencv实现简单人脸识别
Feb 19 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
Python如何重新加载模块
Jul 29 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
一行代码python实现文件共享服务器
Apr 22 Python
python实现简单聊天功能
Python re.sub 反向引用的实现
Jul 07 #Python
Python制作一个随机抽奖小工具的实现
Python 数据科学 Matplotlib图库详解
Python3中最常用的5种线程锁实例总结
Jul 07 #Python
python实现简单的聊天小程序
python获取对象信息的实例详解
Jul 07 #Python
You might like
phpwind中的数据库操作类
2007/01/02 PHP
基于php缓存的详解
2013/05/15 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
理解javascript封装
2016/02/23 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Python yield使用方法示例
2013/12/04 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python制作词云的方法
2018/01/03 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
Python控制Firefox方法总结
2019/06/03 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
python中如何打包用户自定义模块
2020/09/23 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
.net C#面试题
2012/08/28 面试题
杭州黄龙洞导游词
2015/02/10 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
Python 线程池模块之多线程操作代码
2021/05/20 Python