web 自动化测试 (3):web 功能自动化测试 selenium 基础课
继上篇《web 自动化测试(1):为什么选择 selenium 做自动化测试》,本文介绍如 selenium 使用
做 UI 自动化测试,需要什么技能前端相关技术:HTML、XML、JavaScript、TCP/IP 协议等
合适的工具选型:比如 selenium,比如 UTF 等;
编程语言:selenium 支持多种语言,java、C++、python、JavaScript 等
需求分析:项目类型,特质,生命周期,是否适合开展自动化测试等;
如果只是做 UI 差异与还原度对比,用不着 selenium 大驾,phantomjs 截图对比就好,推荐一个基于 dom diff 算法 UI 监控工具:page-monitor
本来准备万字长文,好好嗑叨一番,但是,觉得实在务必要。官网的介绍都很细:https://selenium.dev/documentation/en/,中文把 en 改为 zh-cn 即可:https://selenium.dev/documentation/zh-cn/
慕课网教程:Java Web 自动化测试 Selenium 基础到企业实际应用 https://coding.imooc.com/class/359.html
selenium 现在官网分为三件套:
Selenium IDE:是嵌入到浏览器的插件(目前仅支持 chrome、Firefox),录制和回放 Selenium 脚本,录制好的脚本转换成各种 Selenium WebDriver 支持的程序语言,进而扩展到更广泛的浏览器类型;
Selenium WebDriver:可支持多种语言,用于操作浏览器的一套 API;支持各类型浏览器,跨操作系统;
Selenium Grid:用于远程控制、分布式部署等,均可实现 Selenium 脚本的高效执行与拓展;使得自动化测试可以并行运行,甚至在跨平台、异构的环境中运行,包括主流的移动端环境,如 Android、iOS
Selenium IDE 操作指北关键是 chrome 由于伟大的墙存在,下载不了 chrome Selenium IDE 扩展插件,如有需要,去本人的收集列表看看《Chrome 扩展程序导出备份与本地导入浏览器 》
首先是 Selenium IDE 录制页面操作脚本,这个其实不做测试,平时玩着也蛮有趣的,操作如下
1、点击 Selenium IDE 插件,弹出界面,新建工程,输入测试用例名,点击 ok,打开一个新窗口,(后面默认开始录制,你所有的操作没有按停止前,都是在录制转态)
20200216235456591563235.jpg
2、再次点击,Selenium IDE 插件,弹出界面,关闭录制按钮
20200216235456331264036.jpg
3、操作界面。
20200216235456236216151.jpg
这里的图很草。其实可以随便玩。像小孩子玩手机一样,左 monkey 测试,点多了自然会了
WebDriver 操作 Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。
它允许用户模拟终端用户执行的常见活动;虽然 Selenium 主要用于网站的前端测试,但其核心是浏览器用户代理库。
webDrive 直接下即可,https://selenium.dev/downloads/,前端,npm i selenium-webdriver
接着就是编写脚本,也可以从上面 Selenium IDE
// 不管是 java 还是 python,都是需要导入 webdriver 包// 库下载 https://selenium.dev/documentation/zh-cn/selenium_installation/installing_selenium_libraries/const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {let driver = await new Builder().forBrowser('chrome').build();try {// 控制浏览器:https://selenium.dev/documentation/zh-cn/webdriver/browser_manipulation/// 打开浏览器,WebDriver 通常可以说有一个阻塞 API。web 平台本质上是异步的,所以 WebDriver 不跟踪 DOM 的实时活动状态。await driver.get('https://www.zhoulujun.cn/search.html?m=search&c=index&a=init&siteid=1&typeid=1&ajax=1&q=tar');
})();webDrive 库的安装:https://selenium.dev/documentation/zh-cn/selenium_installation/installing_selenium_libraries/
webDrive 驱动安装:https://selenium.dev/documentation/zh-cn/selenium_installation/installing_webdriver_binaries/
如果不安装驱动,就会报错:The ChromeDriver could not be found on the current PATH. Please download the latest version of the
chrome 驱动如下:http://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip
查找 web 元素,是 selenium 测试的重点,https://selenium.dev/documentation/zh-cn/webdriver/web_element/
查找元素的九种方法 By 查找 By.id
By.name
By.tagName
By.className
By.xpath //常用
By.css("#kw")
By.partialLinkText //模糊匹配
By.linkText("糯米") eg:<a>糯米<a/>
其实也就是我们常见的 css jquery 元素选择器而已。
browser 查找 browser.find_element_by_css_selector('.logo')
这个去查 API,或者查找 browser 方法
操作页面元素的方法获取元素后,可以对页面元素执行相应的动作
input.clear()
input.send_keys('zhoulujun',Key.ENTER)
input.click()
在页面执行 JavaScript 也可以写 js 执行
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')
Selenium GridGrid 服务网格, 一台服务器作为转发器(hub)将 JSON 格式的测试命令转发到 1 台或多台注册的节点。 测试任务通过跟转发器(hub)的交互来操作远端浏览器实例。 转发器(hub)维护了一个可供使用的注册服务器列表,也允许我们通过转发器(hub)来控制这些实例。允许我们在多台节点服务器上并行执行测试, 同时也中心化的管理多个浏览器版本,多种浏览器的配置。(以替代传统的基于个人的测试)
grid.png
按照官方的说法,下载 selenium-server-standalone JAR 文件,然后放在 Tomcat 起个服务就可。具体怎么配置,有空了再来写一篇。
同行文章推荐:
如何进行前端自动化测试? https://www.zhihu.com/question/29922082/answer/189594079
使用 Selenium 实现基于 Web 的自动化测试 https://www.ibm.com/developerworks/cn/web/1209_caimin_seleniumweb/index.html参
Selenium 自动化测试入门(基于 Python)https://blog.csdn.net/baby_hua/article/details/80571109
版权声明: 本文为 InfoQ 作者【zhoulujun】的原创文章。
原文链接:【http://xie.infoq.cn/article/20070bf917c35dae192ca96d2】。文章转载请联系作者。
评论