【问题标题】:Generic mobile tests with appium使用 appium 进行通用移动测试
【发布时间】:2015-01-08 04:09:27
【问题描述】:

我是移动测试新手,目前我正在研究用于移动测试的自动化框架。 我已经开始研究 Appium,并为我制作的演示应用程序创建了一些测试(一个用于 IOS,另一个用于 Android)。 我已经设法为每个平台编写了一个测试,但我想知道,编写一个通用测试可能有多困难,它将在两个平台上执行且调整最少?

谢谢

【问题讨论】:

    标签: android ios mobile appium


    【解决方案1】:

    这是可能的,但您必须为所有平台的每个组件保留相同的标签,例如单击一个按钮,而不是通过 Xpath 定位其名称。

    WebElement button = driver.findElement(By.name("我的按钮")); button.click();

    在 Appium 文档中查找元素的更多信息: http://appium.wikia.com/wiki/Finding_Elements

    【讨论】:

      【解决方案2】:

      我从头开始构建了一个自动化框架,它做的事情完全相同,即有一个代码库,并且根据您提供测试的设备和应用程序在 Android 和 iOS 上运行测试。我就是这样做的。 (我用的是 Java+Appium+Cucumber 框架)。

      • 遵循页面对象模式是编写自动化代码的好习惯。

      话虽如此,您将在名为 "ObjectRepository" 的文件夹下的 2 个单独文件中拥有 Android 的所有资源 ID 和 iOS 的辅助功能 ID。这些文件通常具有*.properties 的扩展名(称为属性文件)。

      假设你有一个登录按钮,你想在 Android 和 iOS 上与之交互,你有 2 个文件:

      文件 1) "androidObject.properties" 其中有:

      Login.LoginButton=loginAndroidBtn

      文件 2) "iOSObject.properties" 其中有:

      Login.LoginButton=loginiOSBtn

      注意:在上面的键/值对中,键是相同的“Login.LoginButton”,值是资源id和Android和iOS中登录按钮的可访问性id应用

      在您的代码中,您将执行以下操作:

      if(IS_ANDROID) {
      
      DRIVER.findElementById("Login.LoginButton").click();
      
       } else {
      
        DRIVER.findElementByAccessibilityId("Login.LoginButton").click();
       }
      

      在另一个文件中,您可以设置 IS_ANDROIDIS_IOS 的含义。你可以这样做:

       public static DeviceConfig DEVICE_CONFIG;
      
        private void setPlatform() {
      
           if (DEVICE_CONFIG.platformName.equals("Android")) {
      
               IS_ANDROID = true;
      
           } else if (DEVICE_CONFIG.platformName.equals("iOS")) {
      
                IS_IOS = true;
         }
      

      这样您就可以拥有一个代码库并无缝运行 Android 和 iOS。

      【讨论】:

        猜你喜欢
        • 2020-05-02
        • 2020-06-30
        • 2018-05-18
        • 2021-10-11
        • 2022-09-23
        • 1970-01-01
        • 2022-11-08
        • 2014-08-03
        • 2018-02-05
        相关资源
        最近更新 更多