Appium在Java中按2个参数查找元素

时间:2018-09-03 07:48:00

标签: java appium

我将Appium与Java结合使用来自动执行针对移动应用程序的测试。我正在寻找一种通过2个参数查找元素的方法。即在此元素中由accessibilityIdxPath组成。如此真实的例子可以直观地说明我的意思

Element el = driver.findElementByAccessibilityId("name").isDisplayed();
Assert.assertTrue(el.findElement(By.xPath("//android.widget.TextView[@text='texty']")));

这是正确的方法吗?有没有更好的办法?理想的情况是使用一根衬纸,因为它更容易理解

1 个答案:

答案 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"));