Selenium WebDriver 是浏览器自动测试工具,提供轻量级和优雅的方式来测试web应用。Selenium WebDriver作为Android SDK extra,支持Android 2.3(Gb)及向前版本。
WebDriver是端对端的测试,可以真实测试用户行为,用户交互如触摸、手指滚动、长按等,还支持HTML5的一些特性,比如本地存储、session存储、应用缓存等。这些测试作为Android tests project的一部分,基于Junit。可以从Eclipse加载或者是通过命令行。WebDriver可以运行在手机、平板、平板模拟器或者真实的设备上。一旦启动,WebDriver打开一个WebView配置类似Android浏览器,并运行测试。
WebDriver 是个Android SDK extra ,可以通过这些指导来安装。并在Slenium站点上也有用户指南。
附简单示例,如下:
创建Android 项目,包含无布局的空的Activity。
1 |
public class SimpleAppActivity extends Activity { |
3 |
public void onCreate(Bundle savedInstanceState) { |
4 |
super .onCreate(savedInstanceState); |
创建Android 测试项目。WebDriver将创建WebView,在主Activity中自动设置布局。下面是在Android 上打开Google首页,查询“洛杉矶天气”。测试验证Google返回搜索结果,首个结果返回给出的答案。
01 |
public class SimpleGoogleTest extends ActivityInstrumentationTestCase2<SimpleAppActivity> { |
03 |
public void testGoogleShouldWork() { |
04 |
// Create a WebDriver instance with the activity in which we want the test to run |
05 |
WebDriver driver = new AndroidDriver(getActivity()); |
06 |
// Let’s open a web page |
07 |
driver.get( "http://www.google.com" ); |
09 |
// Lookup for the search box by its name |
10 |
WebElement searchBox = driver.findElement(By.name( "q" )); |
12 |
// Enter a search query and submit |
13 |
searchBox.sendKeys( "weather in san francisco" ); |
16 |
// Making sure that Google shows 11 results |
17 |
WebElement resultSection = driver.findElement(By.id( "ires" )); |
18 |
List<WebElement> searchResults = resultSection.findElements(By.tagName( "li" )); |
19 |
assertEquals( 11 , searchResults.size()); |
21 |
// Let’s ensure that the first result shown is the weather widget |
22 |
WebElement weatherWidget = searchResults.get( 0 ); |
23 |
assertTrue(weatherWidget.getText().contains( "Weather for San Francisco, CA" )); |
该Activity会在屏幕上显示WebView,允许你看到你的web应用,一旦测试代码执行。
下面是交互测试。
WebDriver支持创建高级手势与设备交互,该示例是 水平轻弹扔掉一张图片,保证库中下一张图片显示。
1 |
WebElement toFlick = driver.findElement(By.id( "image" )); |
2 |
// 400 pixels left at normal speed |
3 |
Action flick = getBuilder(driver).flick(toFlick, 0 , - 400 , FlickAction.SPEED_NORMAL) |
6 |
WebElement secondImage = driver.findElement(“secondImage”); |
7 |
assertTrue(secondImage.isDisplayed()); |
旋转屏幕,保证屏幕显示的图片尺寸调整大小。
1 |
assertEquals(landscapeSize, secondImage.getSize()) |
2 |
((Rotatable) driver).rotate(ScreenOrientation.PORTRAIT); |
3 |
assertEquals(portraitSize, secondImage.getSize()); |
发现一个bug,你可以轻易的截屏,帮助你调试。
1 |
File tempFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); |
- Android蓝牙连接自动测试工具
蓝牙连接自动测试工具 1.需求产生 开发不按着需求走都是耍流氓且浪费时间.此工具的需求产生是研发人员在开发产品时涉及到蓝牙驱动和安卓蓝牙两个东西.但是呢,蓝牙不太稳定,那么工作来了.就需要研发人员一边 ...
- 省时的浏览器同步测试工具 browsersync NodeJS
http://www.browsersync.cn/ 省时的浏览器同步测试工具 Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面 ...
- BrowserSync - 浏览器同步测试工具
背景: 之前在学gulp的时候,使用gulp-livereload来实时自动刷新页面省时开发,但一直比较难用,现在找到新的替代神器. 安装: // 使用淘宝镜像会快些 npm install -g ...
- Android SDK目录结构和工具介绍
Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...
- Qtp自动测试工具
QTP是基于GUI界面的自动化测试工具,用于系统的功能测试. QTP录制的是鼠标和键盘的消息.QTP录制回放时基于windows操作系统的消息机制.QTP在录制时监听应用程序的消息,监听到之后把消息放 ...
- 开源Web测试工具介绍
HtmlUnitHtmlUnit 是 JUnit 的扩展测试框架之一.HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了.HtmlUnit 使用例如 table.form 等 ...
- mac安装浏览器同步测试工具
1.安装node.js (1)打开终端,输入以下命令安装Homebrew ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebre ...
- Web浏览器兼容性测试工具如何选择
对于前端开发工程师来说,网页兼容性测试工程师而言,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,领测软件测试网向您推荐12款很 ...
- 自动测试工具(Jmeter,qtp等)
loadrunner.Selenium.QTP三者区别? Loadrunner是商业性能测试工具,收费,功能强大,适合做复杂场景的性能测试. Selenium是开源的web自动测试工具,免费 ...
随机推荐
- 【BZOJ】【2752】【HAOI2012】高速公路(Road)
数学期望/线段树 然而又是一道road= =上一道是2750…… 下次不要一看期望题就弃疗么…… 期望题≠不可做题……!! 其实在这题中,期望就是(所有情况下 权值之和)/(总方案数) 因为是等概率抽 ...
- ubuntu下mongodb常用命令
1. 启动脚本 #!/bin/bash mongod --dbpath /usr/local/mongodb/data1 chmod +x run-mongodb 2. 关闭数据库服务 官方文档说可以 ...
- MySQL中的模糊查询和通配符转义
MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2 ...
- 附2 hystrix详述(2)- 配置
一.hystrix在生产中的建议 1.保持timeout的默认值(1000ms),除非需要修改(其实通常会修改) 2.保持threadpool的的线程数为10个,除非需要更多 3.依赖标准的报警和监控 ...
- C++ Explicit Constructors(显式构造函数)
C++ 为类(Class)提供了许多默认函数.如果自己没有申明,编译器会为我们提供一个copy构造函数.一个copy assignment操作符和一个析构函数.此外,如果没有申明任何构造函数,编译器会 ...
- Builder 建造者模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- mongoDB报错Cannot find module '../build/Release/bson'
打算用nodejs写一个blog系统,发现nodejs还是存在很多的坑.在使用mongodb时遇到如下报错问题: { [Error: Cannot find module '../build/Rele ...
- Oracle设置为自启动
Oracle设置为自启动 学习了:http://blog.itpub.net/31015730/viewspace-2148412/ oracle自带dbstart命令,主要进行系统启动设置: 在/e ...
- uva 213 - Message Decoding (我认为我的方法要比书上少非常多代码,不保证好……)
#include<stdio.h> #include<math.h> #include<string.h> char s[250]; char a[10][250] ...
- C# ftp ListFilesOnServer
public static bool ListFilesOnServer(Uri serverUri) { // The serverUri should start with the ftp:// ...