问题描述
我正在尝试检查元素是否存在,但是当我们指定该元素应位于另一个元素内时,appium似乎忽略了搜索该元素。 例如:
driver.findElementByAccessibilityId("First element").findElementByAccessibilityId("Second element");
它应该以某种方式工作,因为Appium检查器中有一个名为Locator的选项,在选择策略并从所选元素选项中选择搜索之后,它会找到我所期望的。
查找此类元素的正确方法是什么?
1楼
您可以将xpath用于相同的对象。 情况的样本xpath将类似于:
driver.findElement(By.xpath("//*[@accessibility-id='FirstElement']//*[@accessibility-id='FirstElement']"))
第一个元素和第二个元素之间的//表示第一个元素是开始搜索第二个元素的基础元素。 因此它将在第一个元素的范围之间搜索第二个元素
2楼
简单的解决方案,但不是以下最干净的解决方案:
我正在使用TestNG框架,我认为它不允许诸如以下声明
private WebElement element= driver.findElementByAccessibilityId("First element").findElementByAccessibilityId("Second element");
一个简单的解决办法,但不是最好的办法是只声明父母为:
@FindBy(name="Parent")
private WebElement ParentElement;
然后以测试用例为例:
ParentElement.findElement(By.name("childElement")).isDisplayed())
3楼
将第一个元素作为父元素,第二个元素作为子元素-
MobileElement parentButtonList = (MobileElement)driver.findElementById(parentClassIdentifier);
List<MobileElement> childButtonList = parentButtonList.findElementsById(childClassIdentifier);