美文网首页
appium计算器示例

appium计算器示例

作者: Goorwl | 来源:发表于2017-08-23 15:23 被阅读0次

    文档概述

    appium的原理网上介绍的比较清楚,但是配置过程比较复杂。在这里对简单配置和使用appium运行一次计算器计算做简单总结。

    准备工作

    appium的运行环境还是比较复杂的,依赖的东西比较多,现总结如下(windows环境):

    1、首先安装nodejs(安装命令行版的appium用到);

    2、java的jdk;

    3、Android的sdk;

    4、安装appium server:

    可使用命令行安装,但是网络波动比较大,失败次数可能比价多:npm install -g appium

    建议直接到:appium.io 下载安装桌面版的服务端。

    其他软件有需要再进行安装,简单的运行计算器计算以上软件足以。

    代码实现

    使用以下命令获取当前打开app的包名和activity名称:

    adb shell dumpsys window w |findstr \/ |findstr name=
    
    001

    使用adb device获取设备id(java用)

    java版本:

    使用开发工具,导入三个jar包,分别是:

    002

    代码如下:

    public class Demo {
        private AppiumDriver driver;
        @BeforeClass
        public void setup() throws Exception {
            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability(CapabilityType.BROWSER_NAME, "");
            cap.setCapability("platformName", "Android");                               // 指定测试平台
             cap.setCapability("deviceName", "0617f727007387cb");                       // 指定测试机的ID,通过adb命令`adb
            cap.setCapability("platformVersion", "4.4");                                // 设置测试机的版本
            cap.setCapability("appPackage", "com.android.calculator2");                 // 将上面获取到的包名和Activity名设置为值
            cap.setCapability("appActivity", ".Calculator");
            cap.setCapability("appWaitActivity", "com.android.calculator2.Calculator"); // A new session could not be created的解决方法
            cap.setCapability("sessionOverride", true);                                 // 每次启动时覆盖session,否则第二次后运行会报错不能新建session
            driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);    // 固定写法
        }
        @Test
        public void plus() {
            // 获取7
            driver.findElementById("com.android.calculator2:id/digit7").click();
            // 获取+
            driver.findElementById("com.android.calculator2:id/plus").click();
            // 获取3
            driver.findElementById("com.android.calculator2:id/digit3").click();
            // 获取=
            driver.findElementById("com.android.calculator2:id/equal").click();
        }
        @AfterClass
        public void tearDown() throws Exception {
            driver.quit();                  //彻底退出程序
        }
    }
    

    开启服务端:

    003

    也可以使用命令行开启(比较卡顿):appium

    004

    之后运行plus函数,就会看到测试机自动启动了计算器比计算出3+7的结果,同时服务器还会记录日志。

    python版本:

    python环境需要安装appium库:

    pip install Appium-Python-Client
    

    编写测试代码:

    from appium import webdriver
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.4'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['appPackage'] = 'com.android.calculator2'
    desired_caps['appActivity'] = '.Calculator'
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    
    driver.find_element_by_id('com.android.calculator2:id/digit7').click()
    driver.find_element_by_id('com.android.calculator2:id/plus').click()
    driver.find_element_by_id('com.android.calculator2:id/digit3').click()
    driver.find_element_by_id('com.android.calculator2:id/equal').click()
    
    driver.quit();    
    

    开启服务器,运行python脚本即可。

    问题与小结

    错误1:

    在测试过程中发现错误:

    005

    这是由于appium的会话机制不能及时停止,导致第二次运行就会无法连接。

    解决办法:

    1、桌面版服务器,在设置里面勾选:

    006

    2、命令行服务器,添加参数:- -session-override即可

    appium  - -session-override
    

    3、代码中添加参数

    cap.setCapability("sessionOverride", true); // 每次启动时覆盖session,否则第二次后运行会报错不能新建session
    

    错误2:

    007

    提示服务器未开启。

    错误3:

    008

    解决办法:修改配置信息中的手机版本或者设备id

    小结1:

    在测试过程中发现即使手机锁屏appium也可以直接进行解锁运行4.4。在6.0上面就不可以了,服务器日志提示错误:

    009

    不可以在6.0的系统上自动解锁了。

    相关文章

      网友评论

          本文标题:appium计算器示例

          本文链接:https://www.haomeiwen.com/subject/xunddxtx.html