python自动化和教程_《手把手教你》系列练习篇之2-python+ selenium自动化测试(详细教程)...

1. 简介

今天我们还是继续练习练习基本功,各位小伙伴要耐住住性子,要耐得住寂寞啊,不要急躁,后面你会感谢你在前边的不断练习的。到后面也是检验你前边的学习成果的一次很好实践。

本文介绍如何通过link text、partial link text、class name和name 来定位页面元素。

2.link text定位元素

我们打开网页,一些可以点击的链接跳转上面的文字,就是link text,用百度首页举例来看:

6f245dd3ea98c45ac9b49ec03aa0b09b.png

在上面图中,这一排上面的文字都是link text,例如我们要通过“新闻”这个文本字段来定义这个跳转链接元素。

2.1 代码实现:

2907f24a00b90e85d04c20d8a560fc6e.png

2.2 参考代码:

#coding=utf-8🔥

#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

#2.注释:包括记录创建时间,创建人,项目名称。

'''Created on 2019-11-29

@author: 北京-宏哥 QQ交流群:705269076

Project: python+ selenium自动化测试练习篇2'''

#3.导入模块

from selenium importwebdriver

driver=webdriver.Chrome()

driver.maximize_window()

driver.implicitly_wait(6)

driver.get("https://www.baidu.com")try:

driver.find_element_by_link_text("新闻")print ('test pass: element found by link text')exceptException as e:print ("Exception found", format(e))

driver.quit()

2.3运行结果

运行代码后,控制台打印如下图的结果

3097be0a5bfe91ade22ed8d92f43aee8.png

总结:凡是看到链接元素上面有文字描述的都可以采取find_element_by_link_text()方法来进行元素定位。这里提一下前面XPath定位中的知识,通过text()这个XPath中的函数也可以达到类似link text定位的目的。

这个“新闻”链接元素的XPath表达式可以这样写://*/div[@id='u1']/a[text()='新闻']

3. partial link text定位元素

这里我们来介绍如何通过partial link text来定位页面元素。看到这个,有点和前一篇文字link text有点类似。字面意思,确实和link text相类似,partial link text就是选择这个元素的link text中一部分字段。

还是用百度首页输入框下有一个添加首页“把百度设为主页”。

3.1代码实现

d4b48cf2dd4b6e026a23731e4c796894.png

3.2参考代码

#coding=utf-8🔥

#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

#2.注释:包括记录创建时间,创建人,项目名称。

'''Created on 2019-11-29

@author: 北京-宏哥 QQ交流群:705269076

Project: python+ selenium自动化测试练习篇2'''

#3.导入模块

from selenium importwebdriver

driver=webdriver.Chrome()

driver.maximize_window()

driver.implicitly_wait(6)

driver.get("https://www.baidu.com")try:

driver.find_element_by_partial_link_text("主页").click()print ('test pass: element found by partial link text')exceptException as e:print ("Exception found", format(e))

driver.quit()

3.3运行结果

运行代码后,控制台打印如下图的结果

b5a8a5df24167b02c2bacfb35b660332.png

为了更好的验证是否找到了“把百度添加到首页”这个元素,我在这个地方添加了一个click(),运行代码,可以看到确实点击了这个元素,代表找到了这个元素。选择partial link text的时候,需要选择一个比较唯一的字段,来区分这个元素。

4. class name的值来定位页面元素

有时候,我们在用firepath(不会的请点这里)查看元素的XPath信息,发现没有可以用来定位的id信息,这个时候我们就需要考虑用其他的可用的来定位元素。本文介绍如何通过元素节点中class name的值来定位页面元素。还是以百度首页,搜索输入框定位举例:

XPath截图

867c7d2684d1500101e62a1c3a41ccd5.png

4.1 代码实现:

3b8ca1233904fdde3259de21860f9abf.png

4.2 参考代码:

#coding=utf-8🔥

#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

#2.注释:包括记录创建时间,创建人,项目名称。

'''Created on 2019-11-29

@author: 北京-宏哥 QQ交流群:705269076

Project: python+ selenium自动化测试练习篇2'''

#3.导入模块

from selenium importwebdriver

driver=webdriver.Chrome()

driver.maximize_window()

driver.implicitly_wait(6)

driver.get("https://www.baidu.com")try:

driver.find_element_by_class_name("s_ipt")print ('test pass: element found by class name')exceptException as e:print ("Exception found", format(e))

driver.quit()

4.3 运行结果:

运行代码后,控制台打印如下图的结果

0961280850021b95343a5a8a8066e9f2.png

参考意见:很多情况下,class利用要比id多,如果class中出现了太长的字符,和可变化的数字,那么请回到用XPath定位方法。

5. name的值来定位元素

这里介绍如何通过节点中name的值来定位这个web元素。还是来看百度首页搜索输入框,通过name的值来定位。

5.1 代码实现:

e8b00145812057bd068f976088b89884.png

5.2 参考代码:

#coding=utf-8🔥

#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

#2.注释:包括记录创建时间,创建人,项目名称。

'''Created on 2019-11-29

@author: 北京-宏哥 QQ交流群:705269076

Project: python+ selenium自动化测试练习篇2'''

#3.导入模块

from selenium importwebdriver

driver=webdriver.Chrome()

driver.maximize_window()

driver.implicitly_wait(6)

driver.get("https://www.baidu.com")try:

driver.find_element_by_name("wd") #这里百度搜索输入框有name = 'wd'这个节点信息

print ('test pass: element found by name value')exceptException as e:print ("Exception found", format(e))

driver.quit()

5.3 运行结果:

运行代码后,控制台打印如下图的结果

030d0db965ece6fcfcfdff8946775680.png

总结:name这个属性不是所有的节点都有,如果有建议采用name的值来定位,就和by_id, by_class一样的效果。

6. 小结

好了,今天的练习就到这里,希望大家好好的练习和理解。

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得点波 推荐 不要忘记哦!!!

59e8be8b9ed5d2b535e6e2b012269bb7.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异常在哪一层处理_WiFi速度慢,信号不稳定,除了重启路由器外,自己能怎么处理?...

前言WiFi出了故障,速度慢,信号不稳定,自己处理,除了重启路由器,也没有什么别的招了;好在这万能重启,差不多能解决一大半的小故障;那信号不好,速度慢,不稳定&a…

linux运维、架构之路-HAProxy反向代理

一、HAProxy介绍 专业反向代理,支持双机热备支持虚拟主机,配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端节点出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入,基于TCP和HTTP应用的代理软件,开源免费、快速并且可靠的…

CSS3 3D transform变换

transform的坐标是需要了解的特性。 我们的rotateX,rotateY,rotateZ,和translateX,translateY等都是基于相同的坐标系来定位的。 3D的坐标如下入所示: 3D transform中有下面这三个方法: rotateX( angle )rotateY( angle )rotateZ( angle )理解了这三个方…

vba结束本次循环进行下次_VBA掌握循环结构,包你效率提高500倍

这是系列免费教程《Excel VBA:办公自动化》,还是老规矩,看看我们走到哪里了。1.认识VBA:什么是VBA?2.这些掌握了,你才敢说自己懂VBA3.VBA变量5年踩坑吐血精华总结4.VBA中重要的强制申明,谁看谁明…

CefSharp 支持MP4

效果图: 下载链接:https://share.weiyun.com/d1e249ef5c56b4d909b2124dc2dd8902 创建Wpf项目引用 如下: 第一步:创建项目引用CefSharp 第二步:将DLL拷贝到运行项目的Debug下 第三步:项目平台设置32位 第四…

ReentrantLock 分析

带着疑问去分析 ReentrantLock是如何实现锁管理的。ReentrantLock是如何实现重入的。ReentrantLock是如何实现公平锁与非公平锁。ReentantLock的公平锁为什么一般情况下性能都比公平锁查。ReentrantLock数据结构 ReentrantLock的底层是借助于AbstractQueuedSynchronizer实现的&…

v4l2 框架下如何设置分辨率_Linux下如何进行FTP设置

目录: 一、Redhat/CentOS安装vsftp软件二、Ubuntu/Debian安装vsftp软件一、Redhat/CentOS安装vsftp软件1.更新yum源yum update -y2.安装vsftpyum install vsftpd -y3.修改配置文件vi /etc/vsftpd/vsftpd.conf # 原有初始配置 local_umask022 dirmessage_enableYES x…

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结 【学习内容:第九章——虚拟存储器】 一、课本内容梳理 1.虚拟存储器 作用: 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和…

vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩

TL;DR文章篇幅有点长 ,可以先收藏再看 。要是想直接看看怎么写一个扩展,直接去第二部分 ,或者直接去github看源码 。第一部分 --- Extension 知识点一、扩展的启动如何保证性能 --- 扩展激活(Extension Activation) 我…

webp转换gif_用 WebP 创建尺寸更小、细节更丰富的图片,以此来提高网站的速度...

WebP 文件格式是一种基于 RIFF(资源互换文件格式)的文档格式。WebP 是 2010 年 Google 开发的一种图片格式,它为网页上的图片提供了卓越的无损和有损压缩。网站开发者们可以使用 WebP 来创建尺寸更小、细节更丰富的图片,以此来提高网站的速度。更快的加载…

python 如何判断excel单元格为空_如何用python处理excel(二)

读取excelimport xlrdworkbookxlrd.open_workbook(rC:\Users\Desktop\hebing\学生登记表.xls)sheetworkbook.sheet_by_index(0)#根据序列号来打开某一个sheetrowsheet.nrows#将excel的行数赋值给变量colsheet.ncols#将excel的列数赋值给变量print(sheet.cell_value(1,0))#打印出…

web前端到底是什么?有前途吗

web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> …

此加载项为此计算机的所有用户安装_MDI Jade 6.5软件安装教程

软件下载▼关注微信公众号:贵州永航科技回复Jade即可获得软件安装包下载地址以及详细安装教程更多软件安装教程可点击菜单栏获取软件介绍MDI Jade是一款专门用于XRD分析的软件,XRD分析就是X射线衍射分析,MDI Jade通过对材料进行X射线衍射&…

java 线程定时器_Java线程之Timer定时器

定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的时间晚于当前时间…

vscode 写vue 没有js提示_如何用VSCode实现一个vue.js项目?

1,新建项目打开Visual studio code打开一个你想要创建项目的文件夹打开集成终端:查看 –> 集成终端 或者直接按 ctrl\ 如果没有安装vue-cli,在终端输入:npm install \-g vue-cli全局安装vue-cli然后新建项目vue init webpack projectNamep…

python有没有类似unity3d_像web一样使用python

使用传统的web开发技术,也就是htmljs,然后搭配一个后端语言,已经成为当今web开发的固定模式了,为此也形成了众多的toolkit,譬如ror,django,各种js图形库更是玲琅满目,从非常大程度上也加速了开发过程.但传统web应用也非常自然地有一些诟病,有些特殊效果,c端能够轻而易举地完毕,…

邓白氏编码查询_外贸人常用查询工具汇总

外贸工具类网站FOB价格计算器http://bbs.fobshanghai.com/fobprice.htmCIF价格计算器http://www.easiertrade.com/public/cif.html?_1487894720000海关原产地证真伪查询https://dwz.cn/f3O8YGK6出口退税查询https://dwz.cn/kGWsBclu国家已正式于2018年11月1日起调整产品的出口…

winscp

简介:是linux的一个连接工具 1.winscp的下载:就会自动下载的了 2.安装配置: https://jingyan.baidu.com/article/6525d4b15bae6fac7d2e94a0.html 3.生成密钥: https://jingyan.baidu.com/article/ed2a5d1f377ccb09f6be178b.html 4…

gitlab-ee使用mysql_在 GitLab 我们是如何扩展数据库的

很长时间以来 GitLab.com 使用了一个单个的 PostgreSQL 数据库服务器和一个用于灾难恢复的单个复制。在 GitLab.com 最初的几年,它工作的还是很好的,但是随着时间的推移,我们看到这种设置的很多问题,例如,数据库长久处…

哈希表数据结构_Java数据结构哈希表如何避免冲突

前言一、哈希表是what?这是百度上给出的回答:简而言之,为什么要有这种数据结构呢?因为我们想不经过任何比较,一次从表中得到想要搜索的元素。所以就构造出来了哈希表,通过某种函数(哈希函数)使元素的存储位…