在 Appium 中使用 Selenium Webdriver 选择器 ios

Using Selenium Webdriver Selectors in Appium ios

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

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

谢谢

如何创建多个对象库并基于底层平台加载相关对象库?
1. 所以你需要将两个平台的定位器存储在不同的存储库中
2. 创建一个接口/包装器,它将根据要进行测试的平台加载相关存储库 运行。

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

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

请注意,WebDriverAppiumDriver 标识元素的方式会有所不同。例如,在 WebDriver 中,如果使用 ID 标识元素,则类似地在 AppiumDriver 中,可以使用 findElementByAccessibilityId.

标识元素

尽管 AppiumDriver 使用与 WebDriver 相同的逻辑,但方法名称会有所不同。 AppiumDriver

使用的所有方法请找到link

希望对您有所帮助。

没有完全理解问题,但对于 Appium 你已经为机器人 iOS 和 Android 平台分开了注释,类似于网络通过:

@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 中你已经涵盖了两个平台。

移动平台可以协同工作,但建议不要混合网页和移动,但移动平台可以一起玩,并且推荐这样可以共享相同的代码功能。