Appium XCUIElement在辅助功能ID,值,名称,标签

时间:2017-04-08 05:33:55

标签: appium appium-ios

我开始使用Appium for iOS app自动化。开发人员已将ID和名称放在应用程序代码中的每个元素上,以帮助自动化工程师,但是,当我使用Appium检查它时,它并没有显示任何这些元素。它仅在辅助功能ID,值,名称,标签中显示相同的显示文本。

我应该问开发人员如何使用Appium将这些ID和名称用于自动化。

3 个答案:

答案 0 :(得分:1)

您应该要求开发人员为元素设置辅助功能ID。

我的建议是,您还应该要求开发人员将可访问性ID更改为不完全是元素值的内容,例如:如果您有一个按钮,其中显示" Open&#34 ;,开发者只会给它一个id" Open"。您应该要求他们将辅助功能ID设置为"打开"甚至" openID" - 通过这种方式,您可以确保所有元素都具有辅助功能ID,并且您可以轻松找到丢失的ID,并要求开发人员添加它们。

答案 1 :(得分:1)

在ios中,无论给予元素标签的值是什么,它将成为元素的可访问性ID。可访问性ID只是屏幕上可见的文本。在上面显示的示例中,名称或标签将是元素的可访问性ID。

driver.findElement(By.ID(“Drive”)).click();
driver.findElementByAccessibilityId(“Drive”).click();
driver.findElement(By.name(“Drive”)).click();
driver.findElementByName(“Drive”).click();

在上面的示例中" Drive"可能是标签或名称。 Appium将首先搜索匹配的辅助功能ID。如果找不到,则将尝试在元素标签上进行字符串匹配。最后,如果传入的id是本地化密钥,它将搜索本地化的字符串。

请让您的开发人员为每个元素添加标签,该标签将成为该特定元素的可访问性ID。

答案 2 :(得分:1)

根据我的经验,我了解到,必须使用Identifier字段为iOS应用中的元素提供accessiblity / name属性。

然后你可以用

识别元素
@iOSFindBy(accessibility = "myid")
public MobileElement SOME_OBJECT;

或者

driver.findElementByAccessibilityId("myid")

注意:为Label字段提供任何值都将覆盖屏幕上显示的实际值。因此,通常避免向Label字段提供任何值。这将确保我们能够通过element.getText()从任何元素中获取可见文本。

enter image description here

此外,了解为什么要将标识符的值赋予唯一必需的对象非常重要。

例如,如果要识别Btn Previous或Btn等元素,则需要避免将标识符值分配给Header或View(父对象)。我发现,为父级提供值会抑制子元素的标识符。

enter image description here