移动平台测试自动化工具Appium试用笔记(二)

对不同的自动化工具做了初步的比较,个人总结下。

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框架开发的测试脚本

你可能感兴趣的:(移动平台测试自动化工具Appium试用笔记(二))