zoukankan      html  css  js  c++  java
  • appium(三)appium-desktop的使用

      appium-desktop的作用:方便调试和查找页面元素

    1、首先启动mumu模拟器,然后使用adb 连接到模拟器

    2、启动appium-desktop,先看看需要设置些什么东西

      (1)simple界面

      Host:Android设备的ip,若使用模拟器,使用默认的 0.0.0.0即可

      Port:端口使用默认的4723即可

    如果是真机,Host 和 Port 不用填

      Edit Configurations:设置 ANDRODI_HOME 和 JAVA_HOME,如果已经配置了这两个环境变量,这appium会自动读取,建议先提前配置两个环境变量

       (2)Advanced界面

      Logfile Path:设置appium的log路径

      Log Level:设置log的等级,默认debug即可

      Local Timezone:时区设置,可看情况勾选

      Log Timestamps:日志显示时间戳

      Supress Log Color:设置日志颜色,方便读

    设置好了后即可连接Android设备,start server(启动服务),start inspector session(打开调试界面)

    3、设置 desired capabilities

      常用的设置如下

    {
    "platformName": "Android",  //设备类型 Android 或 ios
    "platformVersion": "6.0.1",  // Android 或 ios 版本
    "deviceName": "127.0.0.1:7555",  //设备名称,模拟器即为 ip,手机可使用 adb连接时的设备名称,使用 adb devices可查看
    "appPackage": "com.baidu.tieba",  //appPackage,下面会介绍获取方法
    "appActivity": ".tblauncher.MainTabActivity",  //appActivity,下面会介绍获取方法
    "noReset": true,  //不清除缓存
    //unicodeKeyboard 和 resetKeyboard 设置Unicode键盘,让脚本能够输入中文,成对使用,单独使用会被ignore
    "unicodeKeyboard":true,  
    "resetKeyboard":true
    }
    连接设备必须的属性 :platformName,platformVersion,deviceName,appPackage,appActivity

    获取 appPackage 和 appActivity 的方法:首先启动对应的App,然后输入命令 adb shell dumpsys activity |findStr "mFoc"

     前面的即为 appPackage ,后面的为 appActivity ,注意千万别把 . 漏掉了

    4、启动 APP

      (1)启动APP失败

      1.出现下图的错误时,不要使用 Automatic Server,使用 Custom Server 启动

      2.有可能会有模拟器的adb和Android studio的adb版本不同而导致链接不上的情况,保证mumu模拟器ADB版本号与SDK的abd版本一致,将SDK的abd复制到mumu模拟器路径下并修改文件名,替换原有文件

      (2)启动后的界面可以 查找元素,按坐标滑动,按坐标点击,录制脚本 等功能,录制脚本时会自动生成 代码脚本,可选择 Java,Python等,写脚本时可以用来参考

    5、元素定位 

      1. app的xml结构中的 attribute中的 content-desc 对应于元素定位时用到 accessibility id,定位使用 driver.findElement(MobileBy.AccessibilityId("请输入QQ号码或手机或邮箱"))

      2. app的xml结构中的 attribute中的 resource-id 对应于元素定位时用到的 id,定位使用 driver.findElement(By.id("com.tencent.mobileqq:id/login"))

      3. 依然可以使用xpath 的属性定位,写法和selenium的xpath的属性定位相同

    6、Java代码

      需要先拉去jar 包:selenium,Java-client

      注意,使用 代码启动APP时,启动appium-desktop的服务即可(start server),不要打开调试界面(start inspector session),防止冲突

        //使用appium-desktop启动APP
        @Test
        public void appConnect() throws InterruptedException, MalformedURLException {
            //配置Capabilities参数
            DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
            //设置必须的参数
            desiredCapabilities.setCapability("deviceName", "127.0.0.1:7555");
            desiredCapabilities.setCapability("platformName", "Android");
            desiredCapabilities.setCapability("platformVersion", "6.0.1");
            desiredCapabilities.setCapability("appPackage", "com.tencent.mobileqq");
            desiredCapabilities.setCapability("appActivity", ".activity.LoginActivity");
            //以下为可选参数
            //不要重置签名
            desiredCapabilities.setCapability("noSign", true);
            //不清除缓存
            desiredCapabilities.setCapability("noReset", true);
            //设置使用unicode键盘,让自动化脚本实现过程中能够输入中文,成对使用,单独使用下面的某一个属性会ignore
            desiredCapabilities.setCapability("unicodeKeyboard", true);
            desiredCapabilities.setCapability("resetKeyboard", true);
            //电脑连接了多个设备时,需要指定设备
            //desiredCapabilities.setCapability("udid","127.0.0.1:7555");
    
            //创建driver对象,URL参数是固定写法,可参考appium-desktop的custom server的Remote Host,Remote Por,Remote Path
            AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
            //启动APP需要一定的时间,注意设置等待时间
            Thread.sleep(3000);
            //使用上面提到过的三种元素定位方式
            driver.findElement(MobileBy.AccessibilityId("请输入QQ号码或手机或邮箱")).sendKeys("123456");
            driver.findElement(By.xpath("//android.widget.EditText[@content-desc='密码 安全']")).sendKeys("12456");
            driver.findElement(By.id("com.tencent.mobileqq:id/login")).click();
    
            Thread.sleep(10000);
            //关闭APP和driver
            driver.closeApp();
            driver.quit();
        }
  • 相关阅读:
    CGI(通用网关接口)
    PHP简介
    SEO搜索引擎优化/URL
    使用表单标签,与用户交互
    认识<img>标签,为网页插入图片
    使用mailto在网页中链接Email地址
    使用<a>标签,链接到另一个页面
    1037. Magic Coupon (25)
    1038. Recover the Smallest Number (30)
    1034. Head of a Gang (30) -string离散化 -map应用 -并查集
  • 原文地址:https://www.cnblogs.com/yjh1995/p/12147379.html
Copyright © 2011-2022 走看看