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

分类专栏: Python+Selenium自动化测试从零到框架设计系列

作者 | Anthony_tester,300w+访问量博主,Oracle测试开发工程师。

地址 | https://blog.csdn.net/u011541946/article/details/68484368

声明 | 本文是 Anthony 原创,已获授权发布,未经原作者允许请勿转载

前面文章,我们介绍了如何采用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()

这里只利用 两个等号(==)来判断两个字符串是否完全相同,有时候我们还需要对得到的字符串进行切割操作,才能进行去匹配,以后再介绍字符串切割处理在自动化测试结果判断中的使用。 总结:自动化测试最难的在于如何去写断言,如何判断测试结果是否通过。 建议:以上代码包括以后文章中脚本举例,你还是最好去一行一行抄写,不要直接复制、黏贴到你记事本中。因为,你在书写脚本过程,肯定会犯一些语法和输入错误,在调试脚本过程,通过观察报错信息,直到你解决问题,可以顺利执行脚本,你会得到和收获很多。

本文分享自微信公众号 - 测试开发社区(TestDevHome)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

【Python 第75课】可迭代对象和迭代器

for 循环是我们在 Python 里非常常用的一个语法,但你有没有思考过 for 循环是怎样实现的?

10520
来自专栏A周立SpringCloud

为什么建议使用你 LocalDateTime ,而不是 Date?

来源:juejin.im/post/5d7787625188252388753eae

7110
来自专栏Python工程师

Python-科学计算-pandas-01-df获取部分数据

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

8330
来自专栏测试游记

测试开发进阶(二十八)

进入 get_object_or_404可以看到一个解包,这样就拿到了查询集中 id=1的内容

6030
来自专栏测试技术圈

grafana&prometheus生产级容器化监控-2:监控rocketmq

笔者为了简单快速,是直接调用rocketmq-console的ajax/http取现成数据,所以本例rocketmq-exporter的运行必须有对应的rock...

12420
来自专栏量子位

英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑

常常发资源的英伟达工程师小姐姐Chip Huyen,又发射了一套Python隐藏功能合集。

8430
来自专栏猪圈子

Python学习曲线

经历长达近一个月的资源筛选过程终于结束,总共1.5T百度网盘的资源经过:去重、筛选、整理、归档之后一份粗略的Python学习曲线资源已经成型,虽然中间经历了很多...

17410
来自专栏Datawhale专栏

大数据处理实践!手把手实现PySpark机器学习项目-回归算法

PySpark作为工业界常用于处理大数据以及分布式计算的工具,特别是在算法建模时起到了非常大的作用。PySpark如何建模呢?这篇文章手把手带你入门PySpa...

11270
来自专栏磐创AI技术团队的专栏

PyTorch&TensorFlow跑分对决:哪个平台运行NLP模型推理更快

开源社区的支持度、上手的难易度都是重要的参考。还有人说:学术界用PyTorch,工业界用TensorFlow。

7120
来自专栏机器学习养成记

图片相似度识别:dHash算法

之前已经介绍了aHash算法的基本原理及python实现代码(图片相似度识别:aHash算法),本次来继续介绍图片相似度识别的另一常用哈希算法——dHash。

23210

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励