【问题标题】: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 应用程序的定位器。然后你必须遵循以下过程
- 创建
WebDriver 和AppiumDriver 实例
- 使用相关驱动程序在 WebApp 和 iOS 应用程序中定位元素。我们可以在测试用例中使用这两个驱动程序。
请注意,WebDriver 和 AppiumDriver 识别元素的方式会有所不同。例如,在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 中你已经覆盖了两个平台。
移动平台可以协同工作,但建议不要将网络和移动混合使用,但移动平台可以很好地协同工作,并且建议可以共享相同的代码功能。