您的位置:首页 > 移动开发 > Android开发

Android WebDriver 浏览器自动测试工具介绍

2014-06-06 18:29 375 查看
http://www.oschina.net/question/6981_30506

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 {
2
@Override
3
public

void
onCreate(Bundle savedInstanceState) {
4
super
.onCreate(savedInstanceState);
5
}
6
}
创建Android 测试项目。WebDriver将创建WebView,在主Activity中自动设置布局。下面是在Android 上打开Google首页,查询“洛杉矶天气”。测试验证Google返回搜索结果,首个结果返回给出的答案。

01
public
class

SimpleGoogleTest
extends
ActivityInstrumentationTestCase2<SimpleAppActivity> {
02
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"
);
08
09
  
// Lookup for the search box by its name
10
  
WebElement searchBox = driver.findElement(By.name(
"q"
));
11
12
  
// Enter a search query and submit
13
  
searchBox.sendKeys(
"weather in san francisco"
);
14
  
searchBox.submit();
15
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());
20
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"
));
24
}
25
}
该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)
4
.build();
5
flick.perform();
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: