继上篇《web自动化测试(1):为什么选择selenium做自动化测试》,本文介绍如selenium使用

做UI自动化测试,需要什么技能

  1. 前端相关技术:HTML、XML、JavaScript、TCP/IP协议等

  2. 合适的工具选型:比如selenium,比如UTF等;

  3. 编程语言:selenium支持多种语言,java、C++、python、JavaScript等

  4. 需求分析:项目类型,特质,生命周期,是否适合开展自动化测试等;

如果只是做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现在官网分为三件套:

  1. Selenium IDE:是嵌入到浏览器的插件(目前仅支持chrome、Firefox),录制和回放Selenium脚本,录制好的脚本转换成各种Selenium WebDriver支持的程序语言,进而扩展到更广泛的浏览器类型;

  2. Selenium WebDriver:可支持多种语言,用于操作浏览器的一套API;支持各类型浏览器,跨操作系统;

  3. Selenium Grid:用于远程控制、分布式部署等,均可实现Selenium脚本的高效执行与拓展;使得自动化测试可以并行运行,甚至在跨平台、异构的环境中运行,包括主流的移动端环境,如Android、iOS

Selenium IDE操作指北

关键是chrome由于伟大的墙存在,下载不了chrome Selenium IDE扩展插件,如有需要,去本人的收集列表看看《Chrome扩展程序导出备份与本地导入浏览器 》

首先是Selenium IDE录制页面操作脚本,这个其实不做测试,平时玩着也蛮有趣的,操作如下

1、点击Selenium IDE插件,弹出界面,新建工程,输入测试用例名,点击ok,打开一个新窗口,(后面默认开始录制,你所有的操作没有按停止前,都是在录制转态)

2、再次点击,Selenium IDE插件,弹出界面,关闭录制按钮

3、操作界面。

这里的图很草。其实可以随便玩。像小孩子玩手机一样,左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查找

  1. By.id

  2. By.name

  3. By.tagName

  4. By.className

  5. By.xpath  //常用

  6. By.css("#kw")

  7. By.partialLinkText //模糊匹配

  8. 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 Grid

Grid服务网格, 一台服务器作为转发器(hub)将JSON格式的测试命令转发到1台或多台注册的节点。 测试任务通过跟转发器(hub)的交互来操作远端浏览器实例。 转发器(hub)维护了一个可供使用的注册服务器列表,也允许我们通过转发器(hub)来控制这些实例。允许我们在多台节点服务器上并行执行测试, 同时也中心化的管理多个浏览器版本,多种浏览器的配置。(以替代传统的基于个人的测试)

按照官方的说法,下载 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

web自动化测试(3):web功能自动化测试selenium基础课的更多相关文章

  1. python web自动化测试框架搭建(功能&接口)——环境搭建

    自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...

  2. [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)

    [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...

  3. 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门

    第1章  Selenium自动化测试框架入门 1.1  Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...

  4. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  5. 从零开始编写自己的C#框架(15)——Web层后端登陆功能

    对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置 ...

  6. Visual Studio 2013 Web开发、新增功能:“Browser Link”

    微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Server 2013. ...

  7. 从0到1搭建移动App功能自动化测试平台(0):背景介绍和平台规划

    本文作者: 伯乐在线 - debugtalk .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 转载地址:http://blog.jobbole.com/101221/ 背景 最近新加入DJI的 ...

  8. Visual Studio 2013 Web开发、新增功能:“Browser Link”

    微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Server 2013. ...

  9. Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看

    Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均 ...

  10. H5 EventSource 实现web页面推送功能demo

    /** * H5 EventSource 实现web页面推送功能demo */ var serverData,statusDiv; var SERVER_URL = "index.php&q ...

随机推荐

  1. 【Java集合】单列集合Collection常用方法详解

    嗨~ 今天的你过得还好吗? 路途漫漫终有一归, 幸与不幸都有尽头. 在上篇文章中,我们简单介绍了下Java 集合家族中的成员,那么本篇文章,我们就来看看 Java在单列集合中,为我们提供的一些方法,以 ...

  2. js执行过程之上下文对象(Context)

    在js的学习中,我们已经不满足于仅了解js的基础知识,而是开始追求更深层次的学习.因为你会发现,仅了解js的基础知识,在开发项目的过程中是远远不够的.今天就来介绍一下在js执行过程中的一些相关内容了. ...

  3. 一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享

    前言 接上篇 docker-bind 的使用搭建了一个 dns 服务,本篇将介绍另外一款 DnsServer 的部署和使用,更专注,更轻量. 特点 基于 .NET 7 实现 ,支持 Windows.L ...

  4. CatCatCat

    拿到题目没有思路,查看了题解 附件 放到kali中用string找flag,得到一个密钥,可以用来下面的解密 打开我养了-- 发现里面以U2F开头,结合txt名称"我养了一只叫兔子的91岁的 ...

  5. 03Java学习_注释和代码规范

    注释和代码规范 目录 注释和代码规范 注释 注释介绍 单行注释 多行注释 文档注释 代码规范 注释 注释介绍 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性):注释 是一个程序员必 ...

  6. 28. 干货系列从零用Rust编写正反向代理,项目日志的源码实现

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...

  7. Markdown & typora 速查

    Markdown & typora 速查 一级标题 # 一级标题 说明:#数量表示几级标题,如二级标题为"## 二级标题",支持到6级标题,#和标题中间有一个空格 typo ...

  8. 神经网络入门篇:详解核对矩阵的维数(Getting your matrix dimensions right)

    核对矩阵的维数 当实现深度神经网络的时候,其中一个常用的检查代码是否有错的方法就是拿出一张纸过一遍算法中矩阵的维数. \(w\)的维度是(下一层的维数,前一层的维数),即\({{w}^{[l]}}\) ...

  9. Net 高级调试之十一:托管堆布局架构和对象分配机制

    一.简介 今天是<Net 高级调试>的第十一篇文章,这篇文章来的有点晚,因为,最近比较忙,就没时间写文章了.现在终于有点时间,继续开始我们这个系列.这篇文章我们主要介绍托管堆的架构,对象的 ...

  10. K8s容器debug高级技巧

    使用 kubectl exec 执行指令 如果您在 Kubernetes 上运行软件,您会想要在某些时候去调试您所部署的软件的一些方面.对于习惯于使用虚拟机 (VMs) 的人来说能自然使用的一种简单的 ...