Appium 基于 java 的自动化测试脚本 Demo

使用的是“夜神模拟器”版本:6.6.1.2
Android版本号:5.1.1
1.创建一个Maven项目
2.导入测试包:

<dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>6.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.3.0</version>
        </dependency>

3.编写测试脚本代码

package com.wang;


import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;
import java.time.Duration;
import java.util.concurrent.TimeUnit;


public class QQAppium {

    static AndroidDriver<WebElement> androidDriver;

    public static void main(String[] args) throws Exception {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");
        desiredCapabilities.setCapability("platformName", "Android");
        desiredCapabilities.setCapability("automationName", "uiautomator2");
        desiredCapabilities.setCapability("appPackage", "com.tencent.mobileqqi");
        desiredCapabilities.setCapability("appActivity", "com.tencent.mobileqq.activity.SplashActivity");
        //创建驱动,传入两个参数,第一个参数,APPium通讯地址,第二个参数:配置对象
        AndroidDriver<WebElement> androidDriver = new AndroidDriver<WebElement>
                (new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
//        WebElement e1 = androidDriver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout");
//        WebElement e2 = androidDriver.findElementByXPath("//android.widget.RelativeLayout[@content-desc=\"root\"]/android.widget.RelativeLayout");
        System.out.println("小页面,需要登录");
        //等待元素加载完毕,10秒   因为模拟器运行需要时间,而代码运行很快,
        // 所以要等待Android加载,否则代码找不到相对应的按钮会报错
//      Thread.sleep(10000);  //强制等待,元素加不加载的出来都等待
        //隐式等待 10秒的隐式等待
        androidDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //同意继续
        androidDriver.findElementById("com.tencent.mobileqqi:id/dialogRightBtn").click();
        //Thread.sleep(5000);
        //登录3454245182
        androidDriver.findElementByClassName("android.widget.EditText").sendKeys("********你的qq号");
        androidDriver.findElementById("com.tencent.mobileqqi:id/password").sendKeys("********qq密码");
        //点击登录
        androidDriver.findElementById("com.tencent.mobileqqi:id/login").click();
        //Thread.sleep(3000);
        androidDriver.findElementByClassName("android.widget.CheckBox").click();
        //点击继续
        Thread.sleep(1000);
        androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"继续\")").click();
        //点击朋友圈
        androidDriver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.view." +
                "View/android.widget.FrameLayout[1]/android.widget." + "HorizontalScrollView/android." +
                "widget.LinearLayout/android.app.ActionBar.Tab[3]").click();

        //点击设置
        androidDriver.findElementByXPath("//android.widget.TextView[@content-desc=\"设置\"]").click();
        //点击设备锁、账号安全
        androidDriver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android." +
                "widget.RelativeLayout/android.view.View/android.widget.FrameLayout[2]/android." +
                "widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android" +
                ".widget.LinearLayout[3]/android.widget.RelativeLayout[2]").click();
        //点击手势密码设定
        androidDriver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget." +
                "RelativeLayout/android.view.View/android.widget.FrameLayout[2]/android.widget.LinearLayout" +
                "/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout[3]").click();
        //点击创建手势密码
        androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"创建手势密码\")").click();
        //九宫格滑动解锁
        //实例化TouchAcation对象
        TouchAction touchAction = new TouchAction<>(androidDriver);
        //原始的数据转成Duration类型的
        Duration duration = Duration.ofMillis(800);
        //吧Duration类型的转换成WatiOptions类型的
        WaitOptions waitOptions = WaitOptions.waitOptions(duration);
        PointOption option1 = PointOption.point(189, 235);
        PointOption option2 = PointOption.point(270, 235);
        PointOption option3 = PointOption.point(350, 234);
        PointOption option4 = PointOption.point(350, 315);
        PointOption option5 = PointOption.point(350, 393);
        //各个坐标的点连起来
        touchAction.press(option1).moveTo(option2).moveTo(option3).moveTo(option4).moveTo(option5).release();
        //让滑动生效
        touchAction.perform();
        PointOption option6 = PointOption.point(188, 235);
        PointOption option7 = PointOption.point(271, 235);
        PointOption option8 = PointOption.point(351, 234);
        PointOption option9 = PointOption.point(350, 315);
        PointOption option10 = PointOption.point(350, 393);
        //各个坐标的点连起来
        touchAction.press(option6).moveTo(option7).moveTo(option8).moveTo(option9).moveTo(option10).release();
        //让滑动生效
        touchAction.perform();
        //点击返回
        androidDriver.findElementByXPath("//android.widget.LinearLayout[@content-desc=\"" +
                "手势密码锁定:向上导航\"]/android.widget.FrameLayout/android.widget.ImageView[1]").click();
        //返回
        androidDriver.findElementByXPath("//android.widget.LinearLayout[@content-desc=\"" +
                "设备锁、帐号安全:向上导航\"]/android.widget.FrameLayout/android.widget.ImageView[1]").click();
        //返回
        androidDriver.findElementByXPath("//android.widget.LinearLayout[@content-desc=\"" +
                "设置:向上导航\"]/android.widget.FrameLayout/android.widget.ImageView[1]").click();
        //点击消息
        androidDriver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.view." +
                "View/android.widget.FrameLayout[1]/android.widget.HorizontalScrollView/android.widget." +
                "LinearLayout/android.app.ActionBar.Tab[1]/android.widget.RelativeLayout").click();
//执行完成之后退出销毁驱动,模拟器返回桌面
        androidDriver.quit();

    }

}

QQ录屏20200907162758


版权声明:本文为weixin_45004745原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。