我将Appium与Java结合使用来自动执行针对移动应用程序的测试。我正在寻找一种通过2个参数查找元素的方法。即在此元素中由accessibilityId
和xPath
组成。如此真实的例子可以直观地说明我的意思
Element el = driver.findElementByAccessibilityId("name").isDisplayed();
Assert.assertTrue(el.findElement(By.xPath("//android.widget.TextView[@text='texty']")));
这是正确的方法吗?有没有更好的办法?理想的情况是使用一根衬纸,因为它更容易理解
答案 0 :(得分:0)
isDisplayed()不返回MobileElement / WebElement,它返回一个布尔值,因此有效的方法如下所述
WebElement el = driver.findElementByAccessibilityId("name");
if (e1.isDisplayed()){
WebElement e2 = el.findElement(By.XPath("//android.widget.TextView[@text='texty']"))
}
Assert.assertTrue(e2.isDisplayed());
您可以链接任意数量的findElement,例如
WebElement innerElement =
driver.findElement(By.AccessbilityID("someID"))
.findElement(By.xpath("someXpath"))
.findElement(By.cssSelector(".aValidCSSClass"));
如果使用findElements,则必须像这样使用它,因为它会返回WebElement列表或MobileElement列表
WebElement innerElement =
driver.findElements(By.AccessbilityID("someID"))
.get(2) //get 2nd element
.findElements(By.xpath("someXpath"))
.get(1) //get 1st element
.findElement(By.cssSelector(".aValidCSSClass"));