Python+Selenium基础篇之5-第一个完整的自动化测试脚本

2023-10-26

      前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样。

      我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项。

      在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本。我把这个测试场景分拆如下步骤:

1) 启动后浏览器,这里我们用Chrome

2) 打开百度首页,https://www.baidu.com

3) 定位搜索输入框,记录下输入框元素的xpath表达式://*[@id='kw']

4) 定位搜索提交按钮(百度一下这个按钮),获取xpath表达式://*[@id='su']

5) 在搜索输入框输入“Selenium”,点击百度一下这个按钮。

6) 在搜索结果列表去判断是否存在Selenium官网这个链接。

7) 退出浏览器,结束测试。


如果,还不会通过火狐浏览器上插件firepath获取元素的表达式,请看上一篇文章。如果你没有安装Chrome,那就用Firefox。

1) 桌面新建一个记事本,命名并保存为FirstScript.py

2) 输入如下代码片段到FirstScript.py,保存

3) 打开cmd窗口,切换到桌面路径下,然后通过python FirstScript.py 来执行脚本。


FirstScript.py脚本如下

# coding=utf-8
import time
from selenium import webdriver

driver = webdriver.Chrome() # 打开chrome,如果没有安装chrome,换成webdriver.Firefox()
driver.maximize_window()    # 最大化浏览器窗口
driver.implicitly_wait(8)   # 设置隐式时间等待

driver.get("https://www.baidu.com")  # 地址栏输入百度地址
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")  # 搜索输入框输入Selenium
driver.find_element_by_xpath("//*[@id='su']").click()  #点击百度一下按钮

# 导入time模块,等待2秒

time.sleep(2) 
# 这里通过元素XPath表达式来确定该元素显示在结果列表,从而判断Selenium官网这个链接显示在结果列表。
# 这里采用了相对元素定位方法/../
# 通过selenium方法is_displayed() 来判断我们的目标元素是否在页面显示。
driver.find_element_by_xpath("//div/h3/a[text()='官网']/../a/em[text()='Selenium']").is_displayed()
driver.quit()


第二种断言写法:

# coding=utf-8
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(8)

driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//*[@id='su']").click()

time.sleep(2)
# 第二个判断方法
ele_string = driver.find_element_by_xpath("//div/h3/a[text()='官网']/../a").text
if (ele_string == u"Selenium - Web Browser Automation"):
    print "测试成功,结果和预期结果匹配!"
driver.quit()

      这里只利用 两个等号(==)来判断两个字符串是否完全相同,有时候我们还需要对得到的字符串进行切割操作,才能进行去匹配,以后再介绍字符串切割处理在自动化测试结果判断中的使用。

总结:自动化测试最难的在于如何去写断言,如何判断测试结果是否通过。

     建议: 以上代码包括以后文章中脚本举例,你还是最好去一行一行抄写,不要直接复制、黏贴到你记事本中。因为,你在书写脚本过程,肯定会犯一些语法和输入错误,在调试脚本过程,通过观察报错信息,直到你解决问题,可以顺利执行脚本,你会得到和收获很多。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python+Selenium基础篇之5-第一个完整的自动化测试脚本 的相关文章

随机推荐

  • c++11 可变参数模板类

    可变参数模板类 如元组 template
  • Java 华为真题-新学校选址

    需求 为了解新学期学生暴涨的问题 小乐村要建立所新学校 考虑到学生上学安全问题 需要所有学生家到学校的距离最短 假设学校和所有学生家都走在一条直线之上 请问学校建立在什么位置 能使得到学校到各个学生家的距离和最短 输入描述 第一行 整数n取
  • Python中的自增运算符

    Python中的自增运算符 1 引言 在许多编程语言中 自增运算符 用于将变量的值增加1 然而 在Python中 我们无法直接使用自增运算符来实现自增功能 本文将介绍Python中的自增运算符的替代方法 并提供示例代码来说明其使用方法 2
  • Deep Learning学习 之 CNN代码解析(MATLAB)

    MATLAB实现CNN一般会用到deepLearnToolbox master 但是根据Git上面的说明 现在已经停止更新了 而且有很多功能也不太能够支持 具体的请大家自习看一看Git中的README deepLearnToolbox ma
  • Neo4j数据建模优化:标签 VS 索引

    原文链接 http graphaware com neo4j 2015 01 16 neo4j graph model design labels versus indexed properties html 在设计Neoj图形化数据库的时
  • Docker daemon日志的位置

    Docker daemon日志的位置 根据系统不同各不相同 Ubuntu var log upstart docker log Boot2Docker var log docker log Debian GNU Linux var log
  • SeetaFaceEngine系列1:Face Detection编译和使用

    SeetaFace 根据GitHub上的介绍 就是一个开源的人脸检测 矫正和识别的开源库 是采用C 来编写的 并且是在CPU上执行的 没有用到GPU 但是可以用SSE或者OpenMP来加速 整个库分为三部分 SeetaFace Detect
  • Python Numpy 关于 linspace()函数 使用详解(全)

    目录 前言 1 函数讲解 2 实战讲解 前言 用plt画图的时候 偶尔会看到这个函数的出现 索性直接深入源码实战进行复现 主要功能 在线性区域中生成等间距的序列 原先在Numpy中可以用numpy arange 但对于浮点数会有精度丢失 因
  • web前端开发自学路线是怎样的?html+css+JavaScript的学习方法

    不废话 直接干货 学习前端的几个阶段 一阶段 html标签 html5新增标签 css样式 css3样式 媒体查询等 二阶段 JavaScript jQuery ajax 面向对象 http传输协议等 三阶段 canvas js高级应用 J
  • C++核心:函数提高(函数默认参数、函数占占位参数、函数重载)

    1 函数默认参数 在C 中 函数的形参列表中的形参是可以有默认值的 返回值类型 函数名 参数 默认值 int func int a int b 10 int c 10 return a b c 1 如果某个位置参数有默认值 那么从这个位置往
  • 数据显示为Ljava.lang.Object;@问题

    那是因为你从数据库读出数据后 存入到list集合上时 如果你没有指定要存入的数据的类型 系统会自动给你赋一个object类型 他是所以类的鼻祖 你取出数据要进行转型 转化成你自己想要的数据类型才能显示
  • pod install 报错 [!] Oh no, an error occurred.

    今天在写react native与原生Swift交互的demo时 新建了一个xcode工程SwiftRnApp执行pod install时报错 点开上面的链接 查看CocoaPods issues 说是要把xcodeproj的版本更新到 1
  • 制作立体图像实用软件:3DMasterKit 10.7 Crack

    3DMasterKit 软件专为创建具有逼真 3D 和运动效果的光栅图片而设计 翻转 动画 变形和缩放 打印机 广告工作室 摄影工作室和摄影师将发现 3DMasterKit 是一种有用且经济高效的解决方案 可将其业务扩展到新的维度 提高生成
  • 电脑知识大全菜鸟必备,学计算机零基础入门知识教程

    电脑在我们生活中的重要性不言而喻 如何保证自己的电脑流畅好用 对于很多用户来说是非常重要的 作为一个理科男和IT从业者 我很在意我的电脑 我会定期整理 保持系统绝对流畅好用 那么本文就分享几个保持电脑流畅好用的小技巧和习惯 希望对你有所帮助
  • jupyter python注释多行

    在jupyter notebook中批量注释多行代码 解除注释也是同样的操作 ctrl
  • 如何进行高效迅速的CodeReview

    背景 第一次参加CodeReview不知道该如何去做 也不知道为什么去做 后来参加多了 慢慢了解了CodeReview的意义 也同时发现CodeReview的效率问题 有时候会发现一个CodeReview时间很长 参与者会觉得煎熬和浪费时间
  • 在PADS中如何导出PCB封装库

    1 在 pads layout 下打开 PADS 文件 2 file library Create New Lib 建立一个自己的PCB DECAL 库 3 将 PCB 缩小到可以全部显示 pcb layout 4 按右键 选择 Selec
  • Frp某场景下实现多层代理

    注 由于传播 利用本文章所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 本文作者不为此承担任何责任 一旦造成后果请自行承担 目录 frp简介 部分配置参数说明 实验场景 实验场景 实验环境 实验步骤 第一层隧道 第二层
  • ceph学习(故障恢复)——mon全部故障,从osd中恢复集群

    在生产环境中 ceph集群要求最少配置3个MON 一般情况下很少出现3个MON同时挂掉的情况 但是也不排除出现这种情况的可能 如果集群中的所有MON都损坏了 是不是集群数据就丢失了呢 能不能恢复集群 当然是可以的 ceph中国的一位开发者写
  • Python+Selenium基础篇之5-第一个完整的自动化测试脚本

    前面文章 我们介绍了如何采用XPath表达式去定位网页元素 在掌握了如何抓取或者如何书写精确的XPath表达式后 我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本 就相当于 你在学习Python 如何在控制台打印Hello