在Appium ios中使用Selenium Webdriver选择器

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

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

谢谢

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

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

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

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

希望这可以帮助。

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

没有完全得到问题,但对于Appium你已经分离了针对iOS和Android平台的注释类似于web的注释:

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

移动平台可以协同工作,但建议不要混合使用网络和移动设备,但移动平台可以很好地协同工作,因此建议共享相同的代码function。