我在从Appium中的日期选择器设置日期时遇到问题。我试图通过以这种方式在字段中发送密钥来设置日期:
List<WebElement> pick = driver.findElements(By.className("android.widget.EditText"));
pick.get(0).sendKeys("21");
pick.get(1).sendKeys("Mar");
pick.get(2).sendKeys("1989");
这在以前版本的API中运行良好,但由于我在不同的设备中测试,现在appium似乎没有正确找到我的元素。以下是检查器窗口中的照片,显示我正在使用正确的类来查找字段。
有什么想法吗?谢谢!!
答案 0 :(得分:1)
不确定是什么问题,因为缺少某些信息,但可能尝试使用swipe
而不是sendKeys
,它看起来不像sendKeys字段。
无论如何,当我需要在测试时更改日期时,我可以推荐一种解决方法,您可以使用以下adb命令:
adb shell date -s YYYYMMdd.HHmmss
它更快更可靠, 希望这有帮助。
答案 1 :(得分:0)
使用xpath执行操作
// Select month name in datepicker
driver.findElement(By.xpath("//android.widget.NumberPicker[@index='0']")).sendKeys("Jan");
// Select day in datepicker
driver.findElement(By.xpath("//android.widget.NumberPicker[@index='1']")).sendKeys("24");
// Select year in datepicker
driver.findElement(By.xpath("//android.widget.NumberPicker[@index='2']")).sendKeys("1987");
答案 2 :(得分:0)
以这种方式执行
List<WebElement> textFieldsList = driver.findElements(By.className("android.widget.EditText"));
int size = textFieldsList.size();
textFieldsList.get(0).sendKeys("test");
textFieldsList.get(1).sendKeys("test");
textFieldsList.get(2).sendKeys("test@gmail.com");
答案 3 :(得分:0)
我在appium-java客户端中如下所示解决了此问题,因为以上都不对我有用:
Android模拟器API级别:28
Android模拟器版本:9
Appium Java客户端版本:5.0.4
以下代码中的 currentMonthElement
是WebElement
,代表日期选择器中的month字段。您可以使用xpath查找或使用driver.findElement
查找该元素的任何方式。以下代码可以重复使用,以输入日期和年份元素的值。请使用日期和年份元素代替currentMonthElement
变量。
touchAction.longPress(LongPressOptions.longPressOptions().withElement(ElementOption.element(currentMonthElement))).release().perform();
driver.getKeyboard().sendKeys(Keys.DELETE);
String monthstr = "Aug";
while(!currentMonthElement.getText().equals(monthstr)){
driver.getKeyboard().sendKeys("Aug");
}
//click on ok button after setting the date, month & year
driver.findElement(By.id("button1")).click();