1 启动appium-server

上次我们讲到了,配置好了appium要保存,当我们再次打开时可以直接启动

android手机写自动化脚本 安卓怎么写自动化脚本_java

启动后的界面

android手机写自动化脚本 安卓怎么写自动化脚本_java_02

 2.配置

点击那个搜索图标,进入到下一个页面,这里我们要设置deviceName,platformName,appPackage,appActivity

android手机写自动化脚本 安卓怎么写自动化脚本_java_03

android手机写自动化脚本 安卓怎么写自动化脚本_android_04

如何获取这些参数,请看下面的操作

3.获取设备名称、APP包名,APP的activity。(APP指的是你要测试的具体某个软件)

3.1获取设备名称(我这里用的是模拟器,真机也是一样的)

首先,要启动安卓模拟器(夜神),如果是真机要插上USB线,设置成开发者模式

然后命令行输入 adb devices 

android手机写自动化脚本 安卓怎么写自动化脚本_java_05

 

发现没有任何设备,同时adb命令也没有问题,然后我们就直接去连接夜神模拟器,命令行输入 adb connect 127.0.0.1:62001(62001是夜神模拟器对外开放的端口)

android手机写自动化脚本 安卓怎么写自动化脚本_java_06

既然连接上了,最后我们获取设备名称,命令行输入adb devices

android手机写自动化脚本 安卓怎么写自动化脚本_设备名_07

 

 3.2 获取APP的包名

命令行输入 aapt dump badging  appName

android手机写自动化脚本 安卓怎么写自动化脚本_android手机写自动化脚本_08

 

 继续往下看,找到activity,activity就是程序的入口

android手机写自动化脚本 安卓怎么写自动化脚本_android_09

 

 至于platformName ,这个很简单,安卓就是Android的,苹果就是IOS

3.3 把获取的参数配置进去,分别是deviceName,platformName,appPackage,appActivity

android手机写自动化脚本 安卓怎么写自动化脚本_设备名_10

 

 配置好了,不要急忙点击 start session,而是要保存,不保存下次就没了

android手机写自动化脚本 安卓怎么写自动化脚本_java_11

 

4  用eclipse编写脚本  (我这里使用了maven,另外还要把java-client 、testNG的依赖引入进来,下次详解)

1 package com.test.ssms;
 2 
 3 import java.net.MalformedURLException;
 4 import java.net.URL;
 5 import java.util.concurrent.TimeUnit;
 6 import org.openqa.selenium.WebElement;
 7 import org.openqa.selenium.remote.DesiredCapabilities;
 8 import org.testng.annotations.AfterMethod;
 9 import org.testng.annotations.BeforeMethod;
10 import org.testng.annotations.Test;
11 import io.appium.java_client.android.AndroidDriver;
12 
13 public class AppiumTest {
14 
15     AndroidDriver<WebElement> androidDrvier;//创建安卓驱动对象
16     DesiredCapabilities capabilities;
17 
18     @BeforeMethod
19     public void setUp() {
20         // 1.创建配置对象
21         capabilities = new DesiredCapabilities();
22         // 2.添加配置:设备名称
23         capabilities.setCapability("deviceName", "127.0.0.1:62001");
24         // 2.1 平台
25         capabilities.setCapability("platformName", "Android");
26         // 2.2 包名
27         capabilities.setCapability("appPackage", "com.pcjz.ssms");
28         // 2.3 app启动入口
29         capabilities.setCapability("appActivity", "com.pcjz.ssms.ui.activity.login.LauncherActivity");
30 
31         // 创建驱动,有2个参数:一个是URL,一个是配置对象
32         try {
33             androidDrvier = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
34         } catch (MalformedURLException e) {
35             e.printStackTrace();
36         }
37 
38     }
39 
40     @Test
41     public void case1() {
42 
43         androidDrvier.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
44 
45         // 用户名
46         androidDrvier.findElementById("com.pcjz.ssms:id/autocompletetv_username").sendKeys("13612341234");
47         // 密码
48         androidDrvier.findElementById("com.pcjz.ssms:id/et_password").sendKeys("341234");
49         // 集团编码
50         androidDrvier.findElementById("com.pcjz.ssms:id/et_company_code").sendKeys("1108");
51         // 登录
52         androidDrvier.findElementById("com.pcjz.ssms:id/bt_login").click();
53         androidDrvier.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
54         // 点击我的
55         androidDrvier.findElementByXPath("//android.widget.TextView[@text='我的']").click();
56         // 点击设置
57         androidDrvier.findElementById("com.pcjz.ssms:id/tv_settings").click();
58 
59     }
60 
61     @AfterMethod
62     public void tearDown() {
63 
64         // 点击退出
65         androidDrvier.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"com.pcjz.ssms:id/btn_exit\")")
66                 .click();
67         // 点击确定
68         androidDrvier.findElementById("com.pcjz.ssms:id/tv_commit").click();
69     }
70 }

 

 注意:运行脚本时必须启动appium-server,还有模拟器(真机要设置成开发者模式),模拟器要把测试的程序装好,我这里为了方便没有使用真机

我这里顺便提一下,使用真机或多或少会出点问题,就是老是重复安装Appium Settings、uiautomator,