我是Appium的新手,一直在尝试自动化Android的转换计算器应用程序。我收到错误“org.openqa.selenium.NoSuchElementException:尝试查找EditText元素时,无法使用给定的搜索参数”“在页面上找到元素。使用Appium 1.0.0版和Android 4.3
下面是我的代码:
List<WebElement> textViews = driver.findElements(By.className("android.widget.TextView"));
for (i=0; i<textViews.size(); i++) {
if(textViews.get(i).getText().toLowerCase().contains("memory")) {
textViews.get(i).click();
}
}
Thread.sleep(5000);
WebElement editText = driver.findElement(By.className("android.widget.EditText"));
editText.sendKeys("123");
甚至findElement by ID也不起作用。请让我知道我在这里做错了什么,或者如果我需要提供更多细节。
5条答案
按热度按时间nx7onnlm1#
我会使用
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
而不是Thread.sleep(5000)
。尝试使用更新版本的Appium,我已经改进了很多。您可以在这里下载最新版本的Appium和Appium客户端:http://appium.io/downloads.html
但是要小心,因为在新版本中,如果搜索结果不止一个,findElement就会抛出一个Exception。
我会把这写在评论里,但是我没有足够的声誉:/
xbp102n02#
可能的原因:
请尝试以下操作:
解决方案1:
0 -编辑文本的索引
解决方案2:
使用任何其他定位策略,如Xpath。
ev7lccsx3#
也许您可以尝试使用WebDriverWait对象等到元素可见或启用?
7vux5j2d4#
尽可能避免使用sleep,尝试使用WAIT命令。即使元素已经在屏幕上,也不要等待已经确定的时间就进入睡眠状态。在等待命令的情况下,只要元素一出现,操作就已经执行,这将大大减少代码的执行时间。
wztqucjr5#
我的问题是我使用的应用程序路径。如果你正在使用配置文件,请确保从设备中单独声明应用程序。如果没有,请确保“应用程序”功能具有正确的路径。下面是我的配置文件中的代码,例如
}