对不同的自动化工具做了初步的比较,个人总结下。
1. Appium 使用的Driver是在Selenium Webdriver的基础上进行封装,底层会根据不同的平台决定调用ios的UIAutomation还是Android的UIAutomator. 也就是说用户使用的webdriver相应的方法会根据不同的平台转换成对应的UIAutomaxxxx的方法。所以用户使用Appium的Driver时候就可以像使用Webdriver一样。
2. Android下面的测试支持框架根据出现时间的先后有两个:Test Instrumentation和UIAutomator. 个人认为两者最重要的一个区别是Test Instrumentation框架是不能跨应用,而UIAutomator是可以跨应用的。 也就是说如果你在测试当前应用的时候需要调用照相机去拍照,前者是控制不了的。
3. 自动化测试工具Robotium是基于Test Instrumentation的,所以Robotium是不能跨应用的
4. UIAutomator就是基于UIAutomator框架的,所以可以跨应用
5. Appium是基于UIAutomator和Test Instrumentation的,所以可以跨应用
6. Robotium中只有一个solo类就处理了所有的事情,比如:
public void testAddNote() throws Exception {
solo.clickOnMenuItem("Add note");
//Assert that NoteEditor activity is opened
solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
//In text field 0, add Note 1
solo.enterText(0, "Note 1");
solo.goBack();
//Clicks on menu item
solo.clickOnMenuItem("Add note");
//In text field 0, add Note 2
solo.enterText(0, "Note 2");
//Go back to first activity named "NotesList"
solo.goBackToActivity("NotesList");
//Takes a screenshot and saves it in "/sdcard/Robotium-Screenshots/".
solo.takeScreenshot();
boolean expected = true;
boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");
//Assert that Note 1 & Note 2 are found
assertEquals("Note 1 and/or Note 2 are not found", expected, actual);
}
7. UIAutomator主要是用几个类进行控制:"UiDevice,UiSelector,UiScrollable,UiObjectUiCollection.
public void testDemo() throws UiObjectNotFoundException {
getUiDevice().pressHome();
// 进入设置菜单
UiObject settingApp = new UiObject(new UiSelector().text("MAJC Box"));
settingApp.click();
//休眠3秒
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 进入语言和输入法设置
UiScrollable settingItems = new UiScrollable( new UiSelector().scrollable(true));
settingItems.setAsHorizontalList();
UiObject languageAndInputItem = settingItems.getChildByText(
new UiSelector().textContains("192.168.1.174"), "MAJC Box\n192.168.1.174", true);
languageAndInputItem.clickAndWaitForNewWindow();
UiObject btnSetup = new UiObject(new UiSelector().resourceId("com.incasedata.app:id/btn_setting_up"));
btnSetup.clickAndWaitForNewWindow();
UiObject btnNext = new UiObject(new UiSelector().resourceId("com.incasedata.app:id/btn_next"));
btnNext.clickAndWaitForNewWindow();
//UiObject imgView = new UiObject(new UiSelector().resourceId("com.incasedata.app:id/user_avatar"));
//imgView.clickAndWaitForNewWindow();
UiObject txtUserName = new UiObject(new UiSelector().resourceId("com.incasedata.app:id/edit_account"));
txtUserName.setText("MAJCBOXISTHEBESTTOOLSFORYOUTOUSERPLEASEGOAHEAD");
}
8. 易测云可以接受Robotium框架开发的测试脚本
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。