如何在datepicker appium中发送日期(Android API 19,版本1.2.4.1)

时间:2015-01-22 12:58:50

标签: java android datepicker appium

我在从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似乎没有正确找到我的元素。以下是检查器窗口中的照片,显示我正在使用正确的类来查找字段。enter image description here

有什么想法吗?谢谢!!

4 个答案:

答案 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

以下代码中的

currentMonthElementWebElement,代表日期选择器中的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();