1 启动appium-server
上次我们讲到了,配置好了appium要保存,当我们再次打开时可以直接启动
启动后的界面
2.配置
点击那个搜索图标,进入到下一个页面,这里我们要设置deviceName,platformName,appPackage,appActivity
如何获取这些参数,请看下面的操作
3.获取设备名称、APP包名,APP的activity。(APP指的是你要测试的具体某个软件)
3.1获取设备名称(我这里用的是模拟器,真机也是一样的)
首先,要启动安卓模拟器(夜神),如果是真机要插上USB线,设置成开发者模式
然后命令行输入 adb devices
发现没有任何设备,同时adb命令也没有问题,然后我们就直接去连接夜神模拟器,命令行输入 adb connect 127.0.0.1:62001(62001是夜神模拟器对外开放的端口)
既然连接上了,最后我们获取设备名称,命令行输入adb devices
3.2 获取APP的包名
命令行输入 aapt dump badging appName
继续往下看,找到activity,activity就是程序的入口
至于platformName ,这个很简单,安卓就是Android的,苹果就是IOS
3.3 把获取的参数配置进去,分别是deviceName,platformName,appPackage,appActivity
配置好了,不要急忙点击 start session,而是要保存,不保存下次就没了
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,