Windows10系统Web UI自动化测试学习系列1--介绍(序章-万事开头难)
测试学习记录,仅供参考!
相关简介
1、环境安装:Python-PyCharm、浏览器驱动、第三方工具、JDK 、Tomcat、Jenkins、Git 等;
2、Web 应用程序测试工具 Selenium、Pytest 测试框架、 POM 设计模式;
3、Selenium 元素定位、元素操作、常用函数、等待方式、文件操作等基本知识;
4、Pytest 测试框架基础、Pytest 插件、多种执行顺序方法、多种参数化数据驱动、前后置应用等;
5、框架设计、二次开发封装公共方法、装饰器使用、测试用例、测试截图、生成测试报告等;
6、测试项目实战、数据库连接、日志封装运用、测试结果推送、持续集成(CI)和持续部署(CD)等;
7、总结
其他:需提前学习了解 计算机基础知识、计算机应用技术、软件测试、Python 高级编程语言等相关知识;
适合自动化测试场景的项目和注意点
项目趋于稳定,项目周期长,需求变动不频繁,且被测项目系统的开发较为规范,能够保证系统的可测试性,选择较稳定的版本业务,选择重点业务,一般项目开发初期不适用自动化测试;
目标是保证主要功能业务完整正常,而不是为了发现更多的 BUG,不能指望自动化测试去发现更多新的BUG,自动化测试能发现的缺陷远远比手工测试少,不建议选择流程较复杂的业务;
自动化测试并不能减少人力成本,主要作用是加快测试反馈,提高测试质量,自动化测试的产出价值往往在于长期的回归测试,短期内发挥的作用可能不明显,自动化测试和测试开发是有区别的;
需要频繁执行回归测试的系统,跑回归测试,减少手工操作量,可以帮助测试人员自动执行重复的测试任务,提高测试效率并减少人工错误;
测试平台是一个 web 系统,测试平台的研发在行业内是比较小众的,大部分是用来忽悠不太懂自动化测试的;
其他等等;例如:会软件测试(匠人精神,热烈欢迎每一位测试爱好者;在教材书本上软件测试是软件质量保证的重要且主要手段,开发人员和产品经理均可参与测试,只是测试工程师更加专业,大家各司其职);
selenium4.0简介
Selenium是一个流行的自动化测试工具,用于测试Web应用程序的功能和用户界面。它可以模拟用户在浏览器中的操作,如点击、输入文本、选择下拉框等,以及验证页面元素的状态和属性。Selenium可以帮助测试人员自动执行重复的测试任务,提高测试效率并减少人工错误。
原理:
在自动化程序中,需要导入selenium库中的WebDriver类来创建一个WebDriver对象,通过调用selenium客户端库相应的函数发送请求给浏览器驱动(如ChromeDriver)。
当使用WebDriver驱动程序执行代码时,WebDriver会将我们的指令转化为HTTP请求,并将其发送给浏览器驱动程序。
浏览器驱动是连接Selenium库和浏览器的桥梁,它负责与浏览器进行通信,并执行我们编写的代码来控制和操作浏览器。
浏览器驱动程序接收到这些HTTP请求后,会将其转化为浏览器可执行的指令,并将指令发送给浏览器进行执行。执行完成后,浏览器将结果返回给浏览器驱动程序,再由浏览器驱动程序将结果转化为HTTP响应,并将其返回给我们的代码程序。
selenium特点
- 免费开源
- 支持多语言,支持Java、Python、C#
- 支持多平台,可以在window、Linux、Mac运行
- 支持很多浏览器,Chrome、edge、Firefox、Safari
- 分布式,可以把我们的测试用例分发到不同的机器上去执行
- 技术支持,成熟的社区
selenium4.0新特性
1)使用selenium4.0以上,要求python版本为3.7及以上
2)定位语法差异,selenium4.0以上已经弃用find_element_by_*,统一使用find_element(by,value)、find_elements(by,value)
3)增加了相对定位,可用的相对定位:above 元素上、below 元素下、toLeftOf 元素左、ToRightOf 元素右、near 附近
4)selenium4.0以后提供了打开新的窗口的功能,driver.switch_to.new_window()
前置工作(基于 Python 语言编程)
1、安装 Python 相关环境,例如:Python 解释器、PyCharm 工具等等(烦请自行安装)
进入jetbrains官网下载或者选择历史版本下载页面:https://www.jetbrains.com/pycharm/download/other.html
若未安装请参考后面的环境安装教程;
2、如若 Python环境已经搭建好(例如:Python、PyCharm 等)
打开 PyCharm ,新建一个项目,例如项目名称为webuitestauto(自定义项目名称)
3、安装selenium库( 最新版本--selenium4.xx)
安装第三方库的方式方法众多,自行选择;例如以下几种方式;
1)、PyCharm→文件(F)→设置(T)...→项目→Python 解释器→添加解释器/安装→可用软件包→文本输入框搜索→选择确定→安装软件包(I)→安装成功即可
2)、打开cmd命令行 pip install selenium
3)、在PyCharm工具命令窗口里面(终端窗口 快捷键 Alt+F12)
4)、使用其他第三方模块安装工具
注意安装selenium库的版本,selenium4版本和selenium3版本是有一些区别的
4、安装对应浏览器驱动
若未配置浏览器驱动烦请查看后续的“浏览器驱动”相关教程;
5、合适的练习项目
6、其他等等(其他相关知识自行学习了解)
7、测试寄语:学习没有一蹴而就,大家伙都是通过不懈努力,一步一步积累汇聚而成。
小试牛刀
1、在项目根目录下新建一个名称为 test_selenium_demo.py 的 Python 文件,简单测试;
from selenium import webdriver# 实例化浏览器
driver = webdriver.Edge()# 访问网页
driver.get('https://www.baidu.com/')# 元素定位,selenium3.0和4.0的差异
# selenium3.0写法
ele = driver.find_element_by_id('id')
print(ele)
2、运行 test_selenium_demo.py 文件会报错,selenium3.0的写法在selenium4.0之后不支持,已经弃用了
============================= test session starts =============================
collecting ...
test_selenium_dome.py:None (test_selenium_dome.py)
test_selenium_dome.py:12: in <module>ele = driver.find_element_by_id('id')
E AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'
collected 0 items / 1 error!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
============================== 1 error in 2.20s ===============================进程已结束,退出代码为 2
3、只打开网页;
from selenium import webdriver# 实例化浏览器
driver = webdriver.Edge()# 访问网页
driver.get('https://www.baidu.com/')# 元素定位,selenium3.0和4.0的差异# selenium3.0写法
# ele = driver.find_element_by_id('id')
# print(ele)
# driver.find_element_by_name('wd')
# driver.find_element_by_class_name('s_ipt')
# driver.find_element_by_xpath('')
5、运行 test_selenium_demo.py 文件,运行成功,可以正常打开访问网页,可添加等待时间查看效果;
============================= test session starts =============================
collecting ... collected 0 items============================ no tests ran in 2.53s ============================进程已结束,退出代码为 5Empty suite
6、使用新版 selenium4.0 以上版本写法;
8、测试代码;
from selenium import webdriver
# 把 By 这个类导入
from selenium.webdriver.common.by import By
import time# 实例化浏览器
driver = webdriver.Chrome()
# 网址URL
my_url = "https://www.baidu.com/"# 打开访问网页
driver.get(my_url)# 元素定位,selenium3.0和4.0的差异# selenium3.0写法
# ele = driver.find_element_by_id('id')
# print(ele)
# driver.find_element_by_name('wd')
# driver.find_element_by_class_name('s_ipt')
# driver.find_element_by_xpath('')# selenium4.0写法
# driver.find_element 单个元素定位
# driver.find_elements 定位一个列表,以列表返回
# 第一个参数 定位方式 -- 第二个参数 元素属性值
driver.find_element(By.ID, 'kw').send_keys('这是一个ID定位测试')
# driver.find_element(By.NAME, 'wd').send_keys('这是一个NAME定位测试')
# driver.find_element(By.CSS_SELECTOR, '#kw').send_keys('这是一个CSS定位测试,表示id')
# driver.find_element(By.CSS_SELECTOR, '.s_ipt').send_keys('这是一个CSS定位测试 .表示class')# 打开新的窗口
# driver.switch_to.new_window()# 停留3秒
time.sleep(3)# 退出
driver.quit()
未完待续。。。