java+appium+安卓模拟器实现app自动化Demo

网上有比较多相关教程,自己写一遍,加深下印象。

环境搭建

据说,很多人都被繁琐的环境搭建给吓到了。

是的,确实,繁琐。

node.js

网址

cmd输入node -v,出现下图说明成功。

JDK

网址

百度一下“配置Java”

cmd输入java -version,出现下图说明成功。

Android SDK

网址

百度一下"配置Android SDK环境变量"

cmd输入adb,出现下图说明成功。

Appium Desktop

网址1 / 网址2

Maven

网址

百度一下“maven环境配置”

cmd输入mvn -version,出现下图说明成功。

IntelliJ IDEA

网址

安卓模拟器

网址

把Android SDK目录下\platform-tools的adb.exe拷贝

打开Nox\bin目录

粘贴替换adb.exe

打开模拟器

cmd输入adb connect 127.0.0.1:62001

再输入adb devices

有道计算器

网址

下载后,apk文件存放在某目录下即可。

将apk文件直接拖入安卓模拟器中。

至此,环境搭建完毕,共安装了8个程序。

实现步骤

打开IntelliJ

创建maven项目

点击ok后,复制下面代码到pom.xm中

<dependencies>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.2</version>
        </dependency>
    </dependencies>

复制粘贴下面代码

import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

import java.net.URL;

import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class AppDemo {
    private AppiumDriver driver;

    @BeforeClass
    public void setup() throws Exception {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(CapabilityType.BROWSER_NAME, "");
        cap.setCapability("platformName", "Android"); //指定测试平台
        cap.setCapability("deviceName", "127.0.0.1:62001"); //指定测试机的ID,通过adb命令`adb devices`获取
        cap.setCapability("platformVersion", "5.1.1");

        //将上面获取到的包名和Activity名设置为值
        cap.setCapability("appPackage", "com.youdao.calculator");
        cap.setCapability("appActivity", "com.youdao.calculator.activities.MainActivity");

//        //A new session could not be created的解决方法
//        cap.setCapability("appWaitActivity", "com.meizu.flyme.calculator.Calculator");
//        //每次启动时覆盖session,否则第二次后运行会报错不能新建session
//        cap.setCapability("sessionOverride", true);

        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    }

    @Test
    public void plus() throws Exception {
        Thread.sleep(3000);
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        int x0 = (int)(width * 0.8);  // 起始x坐标
        int x1 = (int)(height * 0.2);  // 终止x坐标
        int y = (int)(height * 0.5);  // y坐标
        for (int i=0; i<5; i++) {
            driver.swipe(x0, y, x1, y, 500);
            Thread.sleep(1000);
        }

        driver.findElementById("com.youdao.calculator:id/guide_button").click();
        for (int i=0; i<6; i++) {
            driver.findElementByXPath("//android.webkit.WebView[@text='Mathbot Editor']").click();
            Thread.sleep(1000);
        }

        String btn_xpath = "//*[@resource-id='com.youdao.calculator:id/view_pager_keyboard']/android.widget.GridView/android.widget.FrameLayout[%d]/android.widget.FrameLayout";
        driver.findElementByXPath(String.format(btn_xpath, 7)).click();
        driver.findElementByXPath(String.format(btn_xpath, 10)).click();
        driver.findElementByXPath(String.format(btn_xpath, 8)).click();
        Thread.sleep(3000);


    }

    @AfterClass
    public void tearDown() throws Exception {

        driver.quit();

    }
}

文件右键run

然后可以看到脚本在跑了

打开安卓模拟器

一会就看到

计算器app在自己动了!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Java语言、Appium和SauceLabs云平台编写iOS App返回上一页的脚本示例: ```java import io.appium.java_client.AppiumDriver; import io.appium.java_client.ios.IOSDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.net.URL; public class IosAppTest { private AppiumDriver driver; @BeforeClass public void setup() throws Exception { // 设置SauceLabs云平台的配置信息 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("username", "your-saucelabs-username"); capabilities.setCapability("accessKey", "your-saucelabs-accesskey"); capabilities.setCapability("appiumVersion", "1.20.2"); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("platformVersion", "14.5"); capabilities.setCapability("deviceName", "iPhone XS Simulator"); capabilities.setCapability("app", "sauce-storage:your-app-name.ipa"); // 替换为你的iOS App文件名 capabilities.setCapability("name", "iOS App Test"); // 创建AppiumDriver对象,连接SauceLabs云平台 driver = new IOSDriver(new URL("https://ondemand.saucelabs.com/wd/hub"), capabilities); } @Test public void testBackButton() { // 在这里执行进入下一页的操作 // 执行返回上一页的操作 driver.findElementByAccessibilityId("BackButton").click(); // 假设返回按钮的accessibility id为"BackButton" // 验证返回上一页操作是否成功 Assert.assertTrue(driver.findElementByAccessibilityId("PreviousPageTitle").isDisplayed()); // 假设上一页的标题为"PreviousPageTitle" } @AfterClass public void teardown() { // 关闭AppiumDriver对象,断开与SauceLabs云平台的连接 driver.quit(); } } ``` 在这个示例中,我们使用了SauceLabs云平台来运行iOS App自动化测试。我们需要在`setup()`方法中设置SauceLabs的配置信息,包括用户名、访问密钥、Appium版本、iOS平台版本、设备名称、App的文件名等。然后,我们创建`IOSDriver`对象,连接到SauceLabs云平台。 在`testBackButton()`方法中,我们执行进入下一页的操作,然后执行返回上一页的操作,找到页面中的返回按钮元素,并点击该元素。最后,我们验证返回上一页操作是否成功,找到上一页的标题元素,并检查该元素是否已经显示。 最后,在`teardown()`方法中,我们关闭AppiumDriver对象,断开与SauceLabs云平台的连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值