Appium基础学习之 | Appium-Desktop使用

本来还想继续写一篇UiAutomator2.0新增几个API的介绍,但是已经迫不及待回到Appium的轨道中来了,了解UiAutomator2.0与Instrumentation、Accessibility对于学习android自动化帮助都是特别大的,有机会还是想继续往下研究的。从这篇文章开始就正式回到Appium的使用中来了。

一、Appium-Desktop下载

Appium-Desktop在之前文章大概介绍过,这里就不多说了

下载地址:https://github.com/appium/appium-desktop/releases/(window系统选择

appium-desktop-setup-version.exe下载)

二、Appium-Desktop使用

文中使用的Apk下载地址:https://pan.baidu.com/s/16L3b4WFif50AaGFE-elufQ

1.启动Appium Server

Appium基础学习之 | Appium-Desktop使用_第1张图片

使用的是V1.10.0版本,当前最新版本是V1.11.0,不太喜欢用最新版本,用了次高版本;点击Start Server运行Appium Server

Appium基础学习之 | Appium-Desktop使用_第2张图片

2.测试代码

对于使用Appium来说,从Appium1.4.16版本切换成使用Appium-Desktop,客户端(代码)的维护成本是不高的,几乎不需要怎么改动,下面使用的代码与《Appium基础学习之 | Appium执行简单示例》文中一致,只是针对于Appium-Desktop的一些使用规则作了一点点变动。(已经回到Eclipse中,使用Appium框架代码用普通java项目即可)

public class Demo {
    public static void main(String[] args) throws MalformedURLException {
        try{
                //设置apk的路径
                File classpathRoot = new File(System.getProperty("user.dir"));
                File appDir = new File(classpathRoot, "apps");
                File app = new File(appDir, "ymxh_1.0.apk");
                //设置自动化相关参数
                DesiredCapabilities capabilities = new DesiredCapabilities();
                //设备别名
                capabilities.setCapability("deviceName", "vivo x7");
                //如设备已经安装了,设置true不重复安装
                capabilities.setCapability("noReset", true);
                //udid值就是,使用adb devices得到的SN码
                capabilities.setCapability("udid", "5b30ee87");
                //设置apk路径
                System.out.println(app.getAbsolutePath());
                capabilities.setCapability("app", app.getAbsolutePath()); 
                //支持中文输入,必须两条配置
                capabilities.setCapability("unicodeKeyboard", True);
                capabilities.setCapability("resetKeyboard", True);
                capabilities.setCapability("automationName", "uiautomator2");
                //初始化Driver,http://127.0.0.1:4723/wd/hub是Appium服务的地址
                AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
                //使用id定位
                WebElement element = driver.findElement(By.id("com.main:id/android_tab"));
                element.click();
                driver.quit();      
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

变动的是在Appium1.4.16版本之前,使用DesiredCapabilities设置的参数中,布尔值boolean的value使用的是字符串类型,而到了Appium-Desktop版本后直接填写布尔值。最重要的一个参数automationName,Value的值为uiautomator2,这决定使用uiautomator2.0;从这里可以大概猜一下,Appium-Desktop依然兼容UiAutomator1.0的使用。

3.执行测试

准备运行设备,上面代码中填写的5b30ee87为设备SN码,使用的是真机,当然也可以用模拟器。链接的设备只有一台的时候在代码中可以不指定。

运行代码后,在设备上会安装io.appium.uiautomator2.server、io.appium.uiautomator2.server.test、Setting三个APK之后,才会提示安装测试应用的APK,然后执行点击操作完成测试。

(1)首先看看io.appium.uiautomator2.server、io.appium.uiautomator2.server.test

这两个Apk的安装与Instrumentation运行测试是一样的,会推送被测应用、测试应用到设备端并执行。而Appium-Desktopt这里就与Appium1.4.16版本之前推送Bootstrap到设备不同。这是Appium-Desktop改动的一点,它全面拥抱UiAutomator2.0后,也是依靠Instrumentation来运行测试,而Appium-Desktop很巧妙的借助了这点,用来在设备端启动Appium Server的服务端(相对于设备端来说,Window上的Appium-Desktop服务是客户端),剩下的在说到Appium-Desktop的运行过程日志分析再继续说

(2)安装Setting

在Appium1.4.16版本之前的测试中,会安装unlock.app、setting.app、io.appium.android.ime三个应用,而到了Appium-Desktop后只需要安装Setting

上面二点是在使用Appium-Desktop测试执行最开始发现的不同,接下来就是分析运行日志,来看看Appium-Desktop的运行过程中发生了一些什么事情?另开博文分析。

你可能感兴趣的:(Appium,Appium学习)