运行 使用 Appium 实现 Web 应用程序自动化的步骤

Steps to run web application automation using Appium

我在尝试使用 appium 通过物理 Android 设备对 运行 进行自动化测试时遇到了很多麻烦。我不太擅长使用 cmd 和配置,并且很少有关于将其设置为 运行 网络应用程序的教程。这是我的

  1. Java 中编码的 Intellij 自动化项目。测试是 运行 通过 testng xml 文件并同步到 browserstack。
  2. 我已经下载了 Appium。
  3. 我已经在路径中设置了 ANDROID_HOME 变量
  4. 我连接了一个设备,输入adb devices就可以看到了

我认为我拥有我需要的大部分东西,但我不知道要采取的步骤或如何通过我的 phone 将所需的功能更改为 运行!拜托,我知道这是一个广泛的问题,但如果有人可以就如何实现这一目标发表一些见解,我将永远感激不已。谢谢!下面是我如何在 xml 文件中设置测试的示例。

<test name="Standard Ad Regression">
    <parameter name="browserName" value="Android"/>
    <parameter name="device" value="Samsung Galaxy S5"/>
    <parameter name="emulator" value="true"/>
    <parameter name="browser_version" value=""/>
    <parameter name="platform" value="ANDROID"/>
    <parameter name="local" value="true"/>
    <parameter name="baseUrl" value="https://mywebsite.com/"/>
    <parameter name="os" value="os"/>
    <parameter name="os_version" value="4.4"/>
    <parameter name="resolution" value="1024x768"/>
    <parameter name="bsAccount" value="http://myusername:BcB9786AAvEoa45Fj@hub.browserstack.com/wd/hub"/>
    <classes>
        <class name="com.testsuites.regression.TestThis"/>
    </classes>
</test>

这是一个非常笼统的问题,但我已经完全按照您的意愿做了。

  1. 将 Selenium 和 Appium Jar 添加到 Java 项目
  2. 编写您的 Java 测试脚本并初始化 AndroidDriver:

我正在使用单独的方法来获取驱动程序。我这样做的原因是,当我将测试并行扩展到 运行 时,我不需要重新设计。

    public static AndroidDriver getDriver(String udid) throws MalformedURLException{

    String URL = "XXXX";
    ThreadLocal<AndroidDriver> driver = null;  

    DesiredCapabilities capabilities = new DesiredCapabilities();       
    capabilities.setCapability("device", udid);
    capabilities.setCapability("deviceName", udid);
    capabilities.setCapability("udid", udid);
    capabilities.setPlatform(Platform.ANDROID);
    capabilities.setCapability("browserName", "Chrome");    

    try {
        driver = new ThreadLocal<AndroidDriver>();
        driver.set(new AndroidDriver(new URL(URL),
                capabilities));
    } catch (MalformedURLException e) {
        System.out.println("Tackle Issue with RemoteDriverSetup");
    }
    driver.get().manage().timeouts()
            .pageLoadTimeout(20L, TimeUnit.SECONDS);
    driver.get().manage().timeouts()
            .implicitlyWait(20L, TimeUnit.SECONDS);

    return driver.get();
    }
  1. 创建你的testNG.xml

我只是通过这个文件传递设备的 UDID,我看到你使用了多个参数,这也很好。

<?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" parallel="false">
        <test name="Nexus 7">
            <parameter name="udid"  value="XXXX" />
            <classes>
                <class name="testNG.TestOne"/>
            </classes>
        </test> <!-- Test -->
   </suite> <!-- Suite -->
  1. 启动 Appium 服务器

使用 GUI 只需按下按钮,确保使用的 URL 与用于初始化 AndroidDriver 的相同。

  1. 右键单击 testNG 并 运行 作为测试套件。

如果您有任何问题,运行 Appium doctor 并确保一切安装正确。

希望这对您有所帮助,

利亚姆

// Switch to WebView
    Set<String> contextNames = driver.getContextHandles();
    System.out.println(contextNames.size());
    for (String contextName : contextNames) {
        System.out.println(contextName);
        if (contextName.contains("WEBVIEW")){
            driver.context(contextName);
        }
    }

然后,一旦您切换到 webview,您就可以以相同的方式使用 appium API,但现在它们将与 webview 交互。