UI“三重天”之Selenium(一)
关注一下UI自动化,记一记笔记。
UI自动化的优缺点:
关于UI自动化的优缺点想来大家都有了解,优点:解放人力(并不是完全解放),用机器(涵盖工具、脚本等)代替人工完成测试工作,将测试用例转化为脚本实现,其大部分的使用阶段在回归测试阶段。缺点:难维护,依赖于前端。
web端混的风生水起的非Selenium莫属,app端的Uiautomator、appium等等。
UI自动化的核心:
UI自动化的核心还是定位元素。
Web端“一哥”--Selenium:
了解一项技术,最权威的依然是官方文档,贴传送门:https://www.seleniumhq.org/docs
Selenium工作原理:
当下用的最多的还是webdriver,那么webdriver是什么东西呢?用来干什么?在web端的UI自动化过程中充当了什么角色?
webdriver是C/S架构的一套工具,client是编写的自动化脚本代码,server就是由webdriver.exe启动的浏览器,监听来自client发送的消息,并且对其做出响应,从而实现对浏览
器的操作。
通俗一点webdriver就是快递公司,代码是快递信息,快递员是浏览器。
寄快递的时候首先要明白的是要通过哪家快递公司去承运(浏览器应该用chrome还是firefox、IE),选好快递公司之后肯定要写清楚收件人的姓名、地址、电话号码(执行代码中要明确请求URL、触发时间、按钮、输入文本等),快递公司会将这些信息传达给快递员,快递员进行送件;其工作机制可能有些许差别,但是理解容易点,大部分都是异曲同工。
有关webdriver和浏览器的不适配问题碰到不止一次有人问,下方贴了chrome和firefox的全部信息,都是百度来的,当个苦力综合一下:
chrome浏览器历史版本下载地址:https://www.chromium.org/getting-involved/dev-channel(国外版)
https://www.chromedownloads.net/(国内版)
http://npm.taobao.org/mirrors/chromedriver/
Firefox浏览器历史版本下载地址:http://ftp.mozilla.org/pub/firefox/releases/
chrome驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases
chrome驱动与浏览器对应表:
chromedriver版本 | 支持的Chrome版本 |
---|---|
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-32 |
以Selenium官方示例代码为例:
// And now use this to visit Google
driver.get("https://www.baidu.com");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com"); // Find the text input element by its name
WebElement element = driver.findElement(By.name("wd")); // Enter something to search for
element.sendKeys("桃李不言、下自成蹊 博客园"); // Now submit the form. WebDriver will find the form for us from the element
element.submit(); // Check the title of the page
System.out.println("Page title is: " + driver.getTitle()); // Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
}); // Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle()); //Close the browser
driver.quit();
注释写的很明白咯!!,就不一一翻译了。
原文代码是访问google,改成了baidu,搜索内容以及By.name段更改了value。
Firefox浏览器运行方式:
1、增加浏览器安装路径
2、增加驱动路径
System.setProperty("webdriver.firefox.bin", "F:\\Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "E:\\driver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
Chrome浏览器运行方式:
1、增加驱动路径
System.setProperty("webdriver.chrome.driver", "E:\\driver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
该例有访问URL方式,定位元素方式、传值方式、一处显示等待、打印标题、关闭方式。很直观,不算太难吧?
ps:
浏览器版本与驱动版本不匹配绝对是每个人都会遇到的问题,报错原因千奇百怪。
常见的:WebDriverException: unknown error: call function result missing 'value'
更换浏览器或者驱动版本搞定:http://npm.taobao.org/mirrors/chromedriver/
UI“三重天”之Selenium(一)的更多相关文章
- UI自动化填写问卷(selenium)+定时任务(懒人必备)
1.自动填报 UI自动化 selenium 开发程序动机:天天有人催着填写问卷,弄的头大.主要还是懒的每天一个个去填写内容. 开发总时长:2个小时:学习+开发+修改 遇到的小问题: 在自动化填写地图的 ...
- UI自动化测试简介及Selenium工具的介绍和环境搭建
自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...
- UI自动化测试框架之Selenium关键字驱动
一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item).操作(Operation)和值(value),用面向对象形式可将其表现为Item.O ...
- UI“三重天”之selenium--常用API和问题处理(三)
Selenium常用API: 前面两篇示例代码中用到了一些selenium的API方法,例如定位元素的八种方法.访问url.等待.操作浏览器.获取title.点击.清理等等. 有关于selenium的 ...
- UI“三重天”之selenium--封装(二)
基础示例代码: /** * @author Richered **/ package com.sample; import org.openqa.selenium.By; import org.ope ...
- UI自动化测试框架之Selenium关键字驱动 (转)
摘要 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测试工具解释这些关键字即可对其应用自动化 一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要 ...
- Ui"三重天"之重温Uiaumator(1)
移动端自动化技术和接口自动化技术是接下来需要深究和拓展的两方面,基于之前的薄弱基础,重温一波,本篇内容便是android UI自动化框架Uiautomantor1. 介于对移动端自动化并没有实际应用的 ...
- UI“三重天”之实践Uiautomator1
说起来Uiautomator也有一年没碰过了.借此来回顾.总结一下. 也是阅读<精通APP自动化测试>一书.实践出真知的一个框架.编写了部分移动端UI自动化脚本.后续再深入学习. 虽然现在 ...
- 【转】UI自动化测试框架之Selenium关键字驱动
原网址:https://my.oschina.net/hellotest/blog/531932#comment-list 摘要: 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测 ...
随机推荐
- LA 6892 The Safe Secret(矩阵连乘)
https://vjudge.net/problem/UVALive-6892 题意: 给出n个数字和n个符号(+,-,*和?),?可以为+,-,*中任意一个,现在要计算出这个式子的最小值和最大值,并 ...
- Intel Caffe 与原生Caffe
1. 首先安装好docker,拉取intel caffe image: $ docker pull bvlc/caffe:intel 试着运行: $ docker run -it bvlc/caff ...
- PHP-----------HTTP请求的第三方接口
开发中常常遇到接口请求这个功能,后台也不例外,因为遇到了,所以写一篇. 前段时间做商城后台时,需要用到第三方物流接口查询物流信息. post: /**** * @param $url * @param ...
- HTML5 Canvas 代码检测浏览器是否支持
在创建HTML5 Canvas元素之前,首先要检测浏览器是否能够拿支持他,如果不支持,就要用文字或图片替代,检测代码如下所示. <!DOCTYPE html> <html> & ...
- CC工具列表
QuasarRAT Adwind Adzok Arcom Babylon Blacknix Blue Banana Bozok Coringa DarkComet DRAT Gh0st Huige ...
- c primer plus 5 读书笔记1
C语言是一种融合了控制特性的语言,是一种快速.高效.紧凑.可移植性的语言. 使用C语言的7个步骤:定义程序目标.设计程序.编写代码.编译程序.运行程序.测试和调试程序.维护和修改程序. c程序是由一个 ...
- linux 命令-case
case 命令作用: case语句使用于需要进行多重分支的应用情况 case 命令使用场景 在shell中的case结构与C/C++中的switch结构是相同的. 它允许通过判断来选择代码块中多条路径 ...
- 使用java.net.URLConnection发送http请求
首先,这个需要一点HTTP基础,可以先看个书了解下,我看的<http权威指南>的前4章,后面道行不够看不下去. 然后我们的是java.net的接口: 几个类的API: package co ...
- tensorflow命令行参数:tf.app.flags.DEFINE_string、tf.app.flags.DEFINE_integer、tf.app.flags.DEFINE_boolean
tf 中定义了 tf.app.flags.FLAGS ,用于接受从终端传入的命令行参数,相当于对Python中的命令行参数模块optpars(参考:python中处理命令行参数的模块optpars)做 ...
- OK335xS pwm buzzer Linux driver hacking
/**************************************************************************** * OK335xS pwm buzzer L ...