1.准备工作
jdk 1.8
node v10.23.0
android sdk
appium-desktop下载,版本:1.22.3
https://github.com/appium/appium-desktop/releases/
appium-inspector下载,版本:2022.2.1
https://github.com/appium/appium-inspector/releases
夜神模拟器 V7.0.2.5001 Android 7.1.2
2.模拟器调整
1.将夜神模拟器安装目录下的bin/adb.exe用android sdk主目录/platform-tools下的adb.exe覆盖掉,不然会出现下面问题;
2.将夜神模拟器安装目录下的bin/nox_adb.exe添加到环境变量中;
3.在夜神模拟器安装目录/bin下,执行adb connect 127.0.0.1:62001,打开模拟器本地端口。
3.appium和模拟器设置
夜神模拟器分辨率设置为手机版,记下模拟器的android版本(7.1.2),同时打开开发者模式(连点5下版本号,在开发者选项中打开调试);在模拟器中安装并打开待测试app。
在模拟器所在电脑cmd中执行下面命令,获取待测试app的相关信息。
adb shell dumpsys window |findstr mCurrentFocus
上图中斜杠前面的部分为appPacage,后面部分为appActivity(后面appium Inspector需要使用),记录下appPackage、appActivity。
打开appium-desktop(快捷方式名称为Appium Server GUI),使用默认设置,点击Start Server。
打开AppiumInspector,在Appium Server中填写配置,Remote Path修改为/wd/hub(appium版本为1.x的需要修改,如果appium版本为2.x则不需要)。
在Desired Capabilities中填写好platformName、platformVersion、uuid、appPackage、appActivity,分别为Android、7.1.2(安卓版本)、127.0.0.1:62001(前面打开的模拟器端口地址)、com.yishouapp.fumi(app包名)、com.yishouapp.fumi.activity.YishouMainActivity(app入口Activity);点击Start Session。
4.运行
顺序:夜神模拟器 > 待测试app > appium-desktop(快捷方式名称为Appium Server GUI)> AppiumInspector。
5.开启VT
开启VT可以缓解模拟器卡顿问题;惠普笔记本重启后,按F9,再按F10进入BIOS设置,在【系统设置】-【处理器虚拟化技术】中将【禁用】修改为【启用】。
同时设置夜神模拟器cpu为2核,可以使虚拟机运行更流畅。
6.下载appium依赖包
需要的依赖jar包有3个,appium的java-client-xxx.jar,selenium的selenium-java-xxx.jar和selenium-server-standalone-xxx.jar。
通过JitPack | Publish JVM and Android libraries
链接下载appium的java-client;如果不能通过上面方式下载,可手动下载7.6.0版本的jar包。https://jitpack.io/com/github/appium/java-client/7.6.0/java-client-7.6.0.jar
selenium-java、selenium-server-standalone下载;maven方式
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server-standalone</artifactId>
<version>3.141.59</version>
</dependency>
注意selenium-server-standalone很大,如果不能下载,请通过链接下载 https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/selenium-server-standalone-3.141.59.jar。
7.java代码
将java-client-7.6.0.jar、selenium-java-3.141.59.jar、selenium-server-standalone-3.141.59.jar 三个jar包添加到项目中;使用qq极速版(qq极速版,已停止更新,测试使用-Android文档类资源-CSDN下载)测试demo如下。
package com.ybjdw.tool.test;
import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URL;
import java.util.concurrent.TimeUnit;
/**
* author: zhanggw
* 创建时间: 2022/3/25
*/
public class AppiumTest {
private static Logger logger = LoggerFactory.getLogger(AppiumTest.class);
public static void main(String[] args) {
//打包DesiredCapabilities这个类
DesiredCapabilities des = new DesiredCapabilities();
des.setCapability("platformName", "Android");
des.setCapability("platformVersion", "7.1.2");
des.setCapability("deviceName", "Android Emulator");
des.setCapability("noReset", true);
//获取包名及第一个页面的activity
des.setCapability("appPackage", "com.tencent.qqlite");
des.setCapability("appActivity", "com.tencent.mobileqq.activity.SplashActivity");
//创建AppiumDriver对象,连接上Appium服务器,并将相应的键值对传过去
AppiumDriver driver = null;
try {
driver = new AppiumDriver(new URL("http://192.168.1.186:4723/wd/hub"),des);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// 步骤1:在登录页面用户名文本框中输入qq号码
driver.findElementByAccessibilityId("请输入QQ号码或手机或邮箱").clear();
driver.findElementByAccessibilityId("请输入QQ号码或手机或邮箱").sendKeys("xxxx");
Thread.sleep(1000);
// 步骤2:在登录页面密码文本框中输入密码
driver.findElementById("com.tencent.qqlite:id/password_eye").click(); // 显示密码
driver.findElementById("com.tencent.qqlite:id/password").click();
driver.findElementById("com.tencent.qqlite:id/password").clear();
driver.findElementById("com.tencent.qqlite:id/password").sendKeys("xxxx");
Thread.sleep(1000);
// 步骤3:点击登录按钮
driver.findElementByAccessibilityId("登录QQ").click();
// 滑动验证码的图标到相应的位置
//driver.swipe(169, 334, 347, 344, 3000);
Thread.sleep(10*1000);
Thread.sleep(30*1000);
} catch (Exception e) {
logger.error("appiium异常,测试用例不通过!", e);
}finally{
if(driver != null){
driver.quit();
}
}
}
}
8.其它
8.1 appium关闭app方法
driver.terminateApp("com.yishouapp.fumi.activity.YishouMainActivity");
8.2 appium-doctor
appium-doctor可以检测依赖缺失,但不是必须的,使用appium-doctor会发现缺少很多东西,如果没用到,可以不用管。
appium运行情况见视频:
appium自动化视频-Android文档类资源-CSDN下载https://download.csdn.net/download/leadseczgw01/85464586
附录
参考资料:
Appium: 基于Appium的App自动化测试框架完美版
Appium + Java 下载安装和使用_明明懒得要死名字却特别长的Edward的博客-CSDN博客_appium java安装
Appium环境搭建Java篇 - 一盏黄黄旧旧的灯 - 博客园