写点什么

web 自动化测试 (3):web 功能自动化测试 selenium 基础课

用户头像
zhoulujun
关注
发布于: 4 小时前

继上篇《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');


    // 找到搜索框(也可以 By.id('bdcsMain')),输入test,回车。    await driver.findElement(By.name('q')).sendKeys('test', Key.ENTER);    // 搜索页面,找到    let firstResult = await driver.wait(until.elementLocated(By.css('h3>div')), 10000);    console.log(await firstResult.getAttribute('textContent'));    // 关闭浏览器    browser.close()}finally{    driver.quit();}
复制代码


})();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

发布于: 4 小时前阅读数: 5
用户头像

zhoulujun

关注

还未添加个人签名 2021.06.25 加入

还未添加个人简介

评论

发布
暂无评论
web自动化测试(3):web功能自动化测试selenium基础课