1.简介

  相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门槛了要想第二只脚也迈进来。那么就要继续跟随宏哥的脚步继续前行。接下来,宏哥

计划写第二个系列:练习篇,通过一些练习,了解和掌握一些Selenium常用的接口或者方法。同时也可以把各位小伙伴或者童鞋们的基础夯实一下、巩固一下。这样有助于小伙伴或者同学们更快的将自己在门外的第二只脚迈进来,加入自动化测试的队伍中。

  本文通过练习三个知识点:正则提取关键字、ID和tag name定位web页面元素。

2. 练习场景:

  例如:在某一个网页上有些字段或者关键字等信息是我们感兴趣的,我们希望将其摘取出来,进行其他操作。但是这些字段可能在一个网页的不同地方。例如,我们需要在关于百度页面-联系我们,摘取全部的邮箱。

3. 思路拆分:

1. 首先,需要得到当前页面的source内容,就像,打开一个页面,右键-查看页面源代码。

2. 找出规律,通过正则表达式去摘取匹配的字段,存储到一个字典或者列表。

3. 循环打印字典或列表中内容,Python中用 for 语句实现。

4.技术角度实现相关方法:

1. 查看页面的源代码,在Selenium中有driver.page_source 这个方法得到

2. Python中利用正则,需要导入re模块

3. 将字段通过下列代码打印出来

for email in emails :print email

4.1 代码实现

想法技术角度方法都找到,我们新建一个extract_email.py 文件,输入如下代码:

4.2 参考代码:

# coding=utf-8?# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。'''Created on 2019-11-28@author: 北京-宏哥   QQ交流群:705269076Project: python+ selenium自动化测试练习篇'''# 3.导入模块from selenium import webdriverimport redriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)driver.get("http://home.baidu.com/contact.html")# 得到页面源代码doc = driver.page_sourceemails = re.findall(r'[\w]+@[\w\.-]+', doc)  # 利用正则,找出 xxx@xxx.xxx 的字段,保存到emails列表# 循环打印匹配的邮箱for email in emails:print(email)

4.3 解释说明:

在python正则表达式语法中,Python中字符串前面加上 r 表示原生字符串,用\w表示匹配字母数字及下划线。re模块下findall方法返回的是一个匹配子字符串的列表。

4.4 运行结果:

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

5.利用ID定位元素

  在上边,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段。如果感觉有点困难,不能立马理解,没有关系。把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查找,匹配等手段,得到新的字符串或字符串数组,然后根据新得到的字符串进行判断用例是否通过。

下面介绍如何通过元素节点信息ID来定位该元素,使用id来定位元素虽然效率要高于XPath,但是实际测试测项目,能直接通过id定位的元素还是比较少,以下来举例百度首页搜索输入框的id定位。

5.1 代码实现

我们新建一个test_baidu_id.py文件,输入如下代码:

5.2 参考代码

# coding=utf-8?# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。'''Created on 2019-11-28@author: 北京-宏哥   QQ交流群:705269076Project: python+ selenium自动化测试练习篇'''# 3.导入模块from selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)driver.get("https://www.baidu.com")try:    driver.find_element_by_id("kw")print ('test pass: ID found')except Exception as e:print ("Exception found", format(e))driver.quit()

这里,我们通过try except语句块来进行测试断言,这个在实际自动化测试脚本开发中,经常要用到处理异常。本文,我们学习了可以利用find_element_by_id()方法来定位网页元素对象。

5.3 运行结果:

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

6. 利用tag name定位元素

前边介绍了如何通过元素的id值来定位web元素,本文介绍如何通过tag name来定位元素。个人认为,通过tag name来定位还是有很大缺陷,定位不够精确。主要是tag name有很多重复的,造成了选择tag name来定位页面元素不准确,所以使用这个方法定位web元素的机会很少。

什么是tag name? 还是以百度首页搜索输入框,在火狐浏览器,右键,通过firepath,检查元素,看下图:

上面图片中红色圈选区域的标签名称都是tag name;实际上我们目标元素是输入框,应该是input这个tag name,在图中蓝色高亮区域。但是如果只是通过input这个tag name来定位,发现上面有很多input的选项。所以我们扩大节点的参照选择,我们选择上面这个

form来作为我们tag name。

6.1 代码实现

看看如何写定位form这个元素的脚本:

6.2 参考代码

# coding=utf-8?# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。'''Created on 2019-11-28@author: 北京-宏哥   QQ交流群:705269076Project: python+ selenium自动化测试练习篇'''# 3.导入模块from selenium import webdriverdriver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6)driver.get("https://www.baidu.com")try:    driver.find_element_by_tag_name("form")print ('test pass: tag name found')except Exception as e:print ("Exception found", format(e))driver.quit()

6.3 运行结果:

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

7. 小结

总结:本文介绍了webdriver 八大定位元素方法中的driver.find_element_by_tag_name("form") # form是tag name从实际项目中自动化脚本开发来看,使用这个方法定位元素的机会比较少,知道有这么一种方法就好了。

python selenium右键另存为_手把手教你系列练习篇之1python+ selenium自动化测试(详细教程)...相关推荐

  1. win7开机卡在正在启动_手把手教你大白菜PE启动盘安装win7最详细的图解教程

    一.准备工作,制作好PE启动盘U盘一个,把所需要的文件提前复制到U盘里: 2,把启动盘插到电脑USB插口上: 3-1,按下电脑主机开机按钮: 3-2,如果电脑是打开的请重启电脑: 4,设置从U盘启动: ...

  2. arduino温湿度计库文件_手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程...

    原标题:手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程 冬天人们经常关注家里的温湿度,南方没有暖气更关注温度,北方因为天气干燥,有暖气,所以更关注湿度.下边介绍一个非常简单,并且 ...

  3. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  4. python进行数据预测_手把手教你用Python进行时间序列分解和预测

    原标题:手把手教你用Python进行时间序列分解和预测 作者:Mohit Sharma 翻译:数据派THU-王闯(Chuck) 预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃.时间序列 ...

  5. python 词云手把手_手把手教你生成炫酷的词云

    前言: 话说,在这个大数据时代,获取信息显得极为容易,可正是如此,我们想要对信息进行直观地了解难度就大了.Excel是一个很好的数据可视化方法,不过有时候我们的数据来源可能并不是一张或者多张Excel ...

  6. python爬虫如何连接数据库_手把手教你如何在Navicat中如何新建连接数据库及相关报错解决方法...

    前几天给大家分享了如何安装Navicat,没有来得及上车的小伙伴可以戳这篇文章:手把手教你安装Navicat--靠谱的Navicat安装教程.今天给大家分享一下Navicat的简单使用教程,具体的教程 ...

  7. python远程桌面控制_手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤

    配置说明 使用Pycharm 2020.1.1 professional 专业版.(据说只有专业版可以远程连接)如果不是专业的伙伴,可以用校园邮箱注册一个专业版,免费的哦! 步骤 1. 设置Conne ...

  8. python数据预测代码_手把手教你用Python玩转时序数据,从采样、预测到聚类丨代码...

    原标题:手把手教你用Python玩转时序数据,从采样.预测到聚类丨代码 原作 Arnaud Zinflou 郭一璞 编译 时序数据,也就是时间序列的数据. 像股票价格.每日天气.体重变化这一类,都是时 ...

  9. python自助电影售票机_手把手教你用python抢票回家过年(代码简单)

    首先看看如何快速查看剩余火车票? 当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就 ...

最新文章

  1. linux文件传输常用方法
  2. django15:中间件
  3. 图像离群值_什么是离群值?
  4. html类名定义规则_好程序员分享Java语言中的标识符规则
  5. java placeholder_java swing JTextField设置PlaceHolder
  6. Spring Boot 如何使用拦截器、过滤器、监听器?
  7. 吧唧下工作的事情 - 记用canvas封装的小小控件
  8. (面试题)用折半查找法在一组整形数组中查找某个数据
  9. Centos7 安装字体库中文字体
  10. 方便自己的一些学习科研的记录 【小神器】
  11. P、NP、NPC和NP-Hard相关概念的图形和解释
  12. {ResponseInfo:com.qiniu.http.Response@144f47b,status:401, reqId:uwcAAKdVRC2bnUoV, xlog:UP/401, xvia:
  13. <Zhuuu_ZZ>让我们来康康脚本流程控制
  14. 关于跳转页面报404、500错误设置自定义图片和文字
  15. 算法:js 数组 array 去重,并显示所有重复的元素
  16. ACM进阶计划(来自于南阳理工学院)
  17. 一路走来,关于光城那些事
  18. .gitignore git忽略文件
  19. [Android]gradle与Android gradle
  20. 3.8-7.25 partB

热门文章

  1. Netbeans 适配C/C++、JAVA防坑秘笈
  2. 又有大动作?Pokémon Go开发商Niantic收购AR开发平台8th Wall,达成迄今为止金额最大的一笔收购
  3. 蚂蚁集团SOFAStack:新一代分布式云PaaS平台,打造企业上云新体验
  4. 探秘HDR:西瓜、抖音是如何做到让视频的画质堪比影院大片的?
  5. 国行 iPhone 12/Pro/Max双卡模式支持5G网络;支付宝推出「晚点付」功能;MySQL 8.0.22 GA|极客头条
  6. 华为出售荣耀为不实消息,赵明曾在内部否认;迅雷前CEO陈磊涉嫌职务侵占罪被调查 ;Python 3.9发布|极客头条...
  7. 拜托,别再问我什么是 B+ 树了
  8. Python2 倒计时,还不快来掌握 Python3 酷炫的新特性? | 原力计划
  9. 落地即王道,锁死企业智变CP——云+AI
  10. 难怪各家抢滩物联网!真实原因竟是……