树洞 Appium Desktop 使用

l_smile · 2018年04月26日 · 1226 次阅读

Appium Desktop 安装

Appium 生态工具

  • adb:Android 的控制工具,用于获取 Android 的各种数据和控制
  • Appium Desktop:内嵌了 Appium server 和 inspector 工具的综合工具
  • Appium Server:Appium 的核心工具,命令行工具
  • Appium Client:各种语言的客户端封装库,用于连接 Appium Server
    • Python
    • java
    • ruby
    • robotframework-appium

appium desktop 安装

Appium Desktop 工具使用

  • 启动 Genymotion 虚拟机
  • 查看设备:adb services

  • 获取 APP 的基本信息

    • 使用 adb logcat 命令 adb logcat | grep -i ActivityManage*Displayed
    • 使用 aapt 工具 aapt dump badging apkname | grep launchable-activity
  • 启动 Appium Desktop

    双击桌面 Appium 图标,点击 “Start Server v1.7.2” 启动 appium server

  • 查看页面属性

    点击 “Select Elements” 按钮,点击任何一个元素,在右侧的 Selected Element 栏能够显示选中的元素的 id、xpath 和属性信息。

  • 发送 Tap、Send keys,clear 事件

    • Tap:表示按键,比如选择登录按钮元素->点击 Tap,则会触发一个点击登录按钮的操作,如图:
    • Send keys:表示输入,比如点击用户名编辑框->点击 Send Keys,则会触发一个输入操作,输入用户名并点击 “Send Keys” 按钮,如图:
    • clear:表示清除编辑框中内容,比如点击用户名编辑框->点击 Clear,上步中输入的用户名被清除掉,如图:
  • 自动录制脚本

    点击 “Start Recording” 按钮,会打开 Recorder 面板

此时执行按键输入等操作,Appium 会自动录制并生成相应的脚本在 Recorder 面板显示件中运行

自动录制的脚本默认为 Java-Junit 文件,可以点击 “Java-Junit” 下拉列表,选择其他的语言。我们现在以 Java 为例,点击 “Show/Hide Boilerplate Code” 按钮生成一个完整的脚本文件,点击 “Copy code to clipboard” 按钮会将录制的脚本拷贝到剪贴板,把录制的脚本粘贴到 Java 文件

  • 应用:运行自动录制的脚本
    比如我们现在来录制一个完整的 worktile 登录过程,并验证登录是否成功。
package com.demo;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.DesiredCapabilities;

public class SampleTest {

  private AndroidDriver driver;

  @Before
  public void setUp() throws MalformedURLException {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("platformName", "Android");
    desiredCapabilities.setCapability("deviceName", "192.168.9.101:5555");
    desiredCapabilities.setCapability("appPackage", "com.worktile");
    desiredCapabilities.setCapability("appActivity", ".ui.external.WelcomeActivity");
    desiredCapabilities.setCapability("noReset", "true");

    URL remoteUrl = new URL("http://localhost:4723/wd/hub");

    driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    //设置超时时间
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
  }

  @Test
  public void sampleTest() {
    MobileElement el1 = (MobileElement) driver.findElementById("com.worktile:id/btn_login");
    el1.click();
    MobileElement el2 = (MobileElement) driver.findElementById("com.worktile:id/et_username");
    el2.sendKeys("yourname");
    MobileElement el3 = (MobileElement) driver.findElementById("com.worktile:id/et_password");
    el3.sendKeys("yourpasswd");
    MobileElement el4 = (MobileElement) driver.findElementById("com.worktile:id/btn_login");
    el4.click();
  }

  @After
  public void tearDown() {
    driver.quit();
  }
}

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册