【问题标题】:Using Selenium Webdriver Selectors in Appium ios在 Appium ios 中使用 Selenium Webdriver 选择器
【发布时间】:2016-10-29 13:01:41
【问题描述】:

我正在进行的一个项目正在开发一个 web 应用程序和一个 ios 应用程序(同样的事情),我希望能够使用现有的 Selenium 测试,但我们在选择器方面遇到了问题.是否有可用于 Selenium Webdriver 和 Appium ios 的选择器类型或属性名称,以便我可以将变量设置为浏览器或应用程序,它们可以在两者上运行和工作。这个项目之前没有人使用过 Appium,所以我们缺乏很多知识。

我尝试使用ID,发现ios不能用它们,改成名字后发现名字已经从appium中删除了。如果可能,我们更愿意使用在浏览器中与在应用程序中相同的选择器。

谢谢

【问题讨论】:

    标签: java selenium testing appium-ios


    【解决方案1】:

    您可以创建一个对象存储库文件,其中包含 WebApp 和 iOS 应用程序的定位器。然后你必须遵循以下过程

    1. 创建WebDriverAppiumDriver 实例
    2. 使用相关驱动程序在 WebApp 和 iOS 应用程序中定位元素。我们可以在测试用例中使用这两个驱动程序。

    请注意,WebDriverAppiumDriver 识别元素的方式会有所不同。例如,在WebDriver 中,如果使用ID 标识一个元素,那么在AppiumDriver 中同样可以使用findElementByAccessibilityId 标识一个元素。

    即使AppiumDriver 使用与WebDriver 相同的逻辑,方法名称也会有所不同。 AppiumDriver使用的所有方法请查找link

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      如何根据底层平台创建多个对象存储库并加载相关的对象存储库?
      1.因此您需要将两个平台的定位器存储在单独的存储库中
      2. 创建一个接口/包装器,它将根据要运行测试的平台加载相关存储库。

      【讨论】:

        【解决方案3】:

        不太明白这个问题,但对于 Appium 你已经为 bot iOS 和 Android 平台分离了注释,类似于 web via:

        @FindBy(id="buttonOK")
        private WebElement buttonPopUp;
        

        这是 Android 和 iOS 的示例

        @iOSFindBy(id = "lets_do_it")
        @AndroidFindBy(id = "message_popup_dismiss_button")
        @WithTimeout(unit = TimeUnit.SECONDS, time = 1)
        private MobileElement buttonPopUp;
        

        所以在同一个 pageObject 中你已经覆盖了两个平台。

        移动平台可以协同工作,但建议不要将网络和移动混合使用,但移动平台可以很好地协同工作,并且建议可以共享相同的代码功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-14
          • 1970-01-01
          • 2015-12-04
          • 2017-06-09
          • 2019-06-03
          • 2014-02-19
          相关资源
          最近更新 更多