【问题标题】:Steps to run web application automation using Appium使用 Appium 运行 Web 应用程序自动化的步骤
【发布时间】:2016-02-10 10:29:39
【问题描述】:

我在使用 appium 让我的自动化测试通过物理 Android 设备运行时遇到了很多麻烦。我不太擅长使用 cmd 和配置,并且很少有关于设置它以运行 Web 应用程序的教程。这就是我所拥有的

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

我想我拥有我需要的大部分东西,但我不知道要采取的步骤或如何更改所需的功能以通过我的手机运行它!拜托,我知道这是一个广泛的问题,但如果有人能对如何实现这一点有所了解,我将永远感激不尽。谢谢!下面是我如何在 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>

【问题讨论】:

    标签: java node.js selenium appium selendroid


    【解决方案1】:

    这是一个非常笼统的问题,但我所做的几乎与您尝试做的完全一样。

    1. 将 Selenium 和 Appium 罐子添加到 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 的 URL 相同。

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

    如果您有任何问题,请运行 Appium Doctor 并确保所有内容都已正确安装。

    希望这会有所帮助,

    利亚姆

    【讨论】:

      【解决方案2】:
      // 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,但现在这些 API 将与 webview 交互。

      【讨论】:

        猜你喜欢
        • 2017-05-14
        • 1970-01-01
        • 2014-09-25
        • 2021-10-11
        • 2020-09-28
        • 2021-06-23
        • 1970-01-01
        • 2020-12-07
        • 1970-01-01
        相关资源
        最近更新 更多