第一个自动化脚本
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,网上也有这种解决方案,有些博客是复制粘贴的,自己都没试过,根据网上的那些来,治标不治本,根本无法有效解决。如果有朋友有很好的解决方案,欢迎交流。

浙公网安备 33010602011771号