appium(三)appium-desktop的使用

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

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

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

  (1)simple界面

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

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

  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 的方法: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();
    }

原文地址:https://www.cnblogs.com/yjh1995/p/12147379.html

时间: 2024-11-02 21:46:50

appium(三)appium-desktop的使用的相关文章

Appium与Appium Desktop的区别

Appium-Server的配置,在之前的博文已有介绍,基于Python的Appium环境搭建合集,所以在此处就不详细介绍了.今天主要来分享下Appium-Server和Appium desktop在使用上的区别. 在这篇博文中分享了如何使用模拟器,Genymotion模拟器的安装及脚本制作,但还没分享如何使代码正常运行起来,接下来详细说明. 在谈起代码时,就需要先了解下appium的关键字 Appium 服务关键字 关键字 描述 实例 automationName 你想使用的自动化测试引擎 A

Appium 三种wait方法(appium 学习之改造轮子)

前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html   知乎Android客户端登陆:http://www.cnblogs.com/tobecrazy/p/4579631.html appium实现截图和清空EditText:  http://www.cnblogs.com/tobecrazy/p/4592405.html 学过selenium的都知道,一般等待元素加载有三种办法: sle

三 APPIUM GUI讲解(Windows版)

本文本转自:http://www.cnblogs.com/sundalian/p/5629386.html APPIUM GUI讲解(Windows版) Windows版本的APPIUM GUI有以下图标或者按钮: ·Android Settings  - Android设置按钮,所有和安卓设置的参数都在这个里面 ·General Settings – 通用设置按钮 ·Developer Settings – 开发人员设置 ·About – 关于 Inspector – 元素侦测 ·Launch

三 APPIUM Android自动化 测试初体验

1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖: <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.10</version> <scope>test</s

AndroidUI自动化(python+appium)-Appium 启动

一.客户端启用appium. 二.CMD中命令行启动appium. 三.启动的代码.(appium的服务一和二选择一个就好了) from appium import webdriverfrom time import sleepdef get_driver(): capablities = { "platformName": "Android", "deviceName": "127.0.0.1:62001", "a

[Appium] 使用Appium过程中遇到的各种坑

以下问题都是以ios为背景: 1. 问题: Case: 在页面S1上,点击元素A后,判读B元素是否出现. Detail:一开始通过Appium Inspector, 可以找到B元素,所以直接取该元素的name, 在代码中写入findElement(By.name("NameOfB")); 但是case始终运行失败, 之后打开Appium Inspector, 通过name查找该元素, 发现inspector定位到了另一个非此名的元素上.即使重新刷新页面去获取新的dom, 也不起作用.

appium===Python+Appium环境部署教程

*前提是你已经安装好python,以及python的pip工具 *安装python请自行百度教程~ 1.安装安卓sdk 安装包:http://tools.android-studio.org/index.php/sdk *如果不需要虚拟机,则不需要安装这一步! 你需要科学上网,或者查找到国内的 Android 镜像,安装一个版本的Android虚拟机.你可以根据自己的喜好选择安装 Android 5.0 /5.1 /6.0 /7.0 版本. 这里推荐一个网站:http://www.android

Appium禁止appium setting和unlock在设备上重复安装

1.文件:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/lib/driver.js,注释以下几句代码 await this.adb.uninstallApk(this.opts.appPackage);   await helpers.installApkRemotely(this.adb, this.opts);   await helpers

Appium+python自动化22-Appium Desktop【转载】

Appium Desktop 原滋原味的官方文档 Appium Desktop是一款用于Mac.Windows和Linux的开源应用,它提供了Appium自动化服务器在一个漂亮灵活的UI中的强大功能.它是一些与appium相关的工具的组合: Appium服务器的图形界面.您可以设置选项.启动/停止服务器.查看日志等-您也不需要使用Node / NPM安装Appium,因为节点运行时将与Appium桌面绑定. 您可以使用一个检查器来查看应用程序的元素,了解它们的基本信息,并与它们进行基本的交互.这

appium 自动化测试框架详读(一)

appium框架使用的过程记录,开始使用markdown来语法来编写,不知道博客园是否会支持markdown语法 ***1. appium原理* appium启动时,创建一个http://127.0.0.1:4723/wd/hub服务端服务端和设备默认使用4724端口进行通信* 底层调用UIautoamator工具* 服务端给设备一个bootstrap.jar * 启动包后会在手机上创建socket服务,暴露4723端口* 服务端收到也就是appium收到脚本传递命令,通过电脑4724端口想设备