appium+java+模拟器

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下载icon-default.png?t=N7T8https://download.csdn.net/download/leadseczgw01/85464586

附录

参考资料:

Appium: 基于Appium的App自动化测试框架完美版

Appium + Java 下载安装和使用_明明懒得要死名字却特别长的Edward的博客-CSDN博客_appium java安装

Appium环境搭建Java篇 - 一盏黄黄旧旧的灯 - 博客园

Appium移动自动化测试(一)--安装Appium - 虫师 - 博客园

Getting Started - Appium

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kenick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值