我是这个论坛和appium / android自动化的新手,在我采取下一步行动之前,我需要帮助验证我的应用程序中是否存在对象。
我尝试使用下面的代码,但是甚至没有达到我的第二份印刷声明。
@Test
public void addContact() {
System.out.println( "Checking if Contact exists.... 111111 ");
WebElement e = driver.findElement(By.name("John Doe"));
System.out.println( "Checking if Contact exists.... 222222");
boolean contactExists = e.isDisplayed();
System.out.println( contactExists );
if (contactExists == true) {
System.out.println( "Contact exists.... ");
} else {
System.out.println( "Contact DOES NOT exists.... ");
}
}
在这里运行此代码的appium控制台输出......它只是循环遍历这个并且脚本失败。
info:[BOOTSTRAP] [info]获得类型为ACTION的命令
info:[BOOTSTRAP] [debug]得到命令动作:找到
info:[BOOTSTRAP] [debug]使用带有contextId的NAME查找John Doe:
info:[BOOTSTRAP] [info]返回结果:{"值":"未找到任何元素","状态":7}
info:将命令推送到appium工作队列:[" find",{" strategy":" name"," selector": " John Doe"," context":""," multiple":false}]
info:[BOOTSTRAP] [info]从客户端获取数据:{" cmd":"操作","操作":"找到&# 34;," params":{" strategy":" name"," selector":" John Doe", "上下文":"""多个":假}}
是在这里显示正确的方法还是有更好的替代方法来做到这一点?
干杯...... TIA
答案 0 :(得分:1)
如果您使用的是Appium 1.0 +
答案 1 :(得分:1)
在较新版本的appium中,您拥有"辅助功能ID"。请使用这些。 快乐自动化
答案 2 :(得分:0)
也许以下内容会对您有所帮助。我有我的TestBase类中的方法:
protected static boolean isElementPresent(By by) {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
List<WebElement> list = driver.findElements(by);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
if (list.size() == 0) {
return false;
} else {
return list.get(0).isDisplayed();
}
}
public boolean elementIsNotPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
return driver.findElements(by).isEmpty();
} finally {
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
另外,我使用以下代码等到屏幕上的某个元素:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By
.xpath("//android.widget.Button[contains(@text, 'Log In')]")));
或:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.presenceOfElementLocated(By
.xpath("//android.widget.TextView[contains(@resource-id, 'action_bar_title')]")));