【问题标题】:How can sent the date in a datepicker appium (Android API 19, version 1.2.4.1)如何在 datepicker appium 中发送日期(Android API 19,版本 1.2.4.1)
【发布时间】:2015-01-22 12:58:50
【问题描述】:

我在从 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 似乎无法正确找到我的元素。这是检查器窗口中的一张照片,显示我正在使用正确的类来查找字段。

有什么想法吗?谢谢!!

【问题讨论】:

    标签: java android datepicker appium


    【解决方案1】:

    由于缺少某些信息,不确定是什么问题,但可以尝试使用 swipe 而不是 sendKeys,它看起来不像 sendKeys 字段。

    无论如何,我可以推荐一个解决方法,当我需要在测试时更改日期时,您可以使用以下 adb 命令:

    adb shell 日期 -s YYYYMMdd.HHmmss

    它更快更可靠, 希望这会有所帮助。

    【讨论】:

    • 确保您的 PC 上安装了 adb 并在您的设备上启用了 USB 调试,然后通过命令行运行命令,link 将为您提供帮助。
    • 但这如何帮助我自动化测试?基本上每次我必须运行我的测试时,我都必须在测试运行时发送一个日期。有没有办法以编程方式发送这个 adb 命令?
    • 是的,只需在 Java 中运行:Runtime.getRuntime().exec("adb shell date -s YYYYMMdd.HHmmss");
    【解决方案2】:

    使用 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");
    

    【讨论】:

      【解决方案3】:

      这样做

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

      【讨论】:

        【解决方案4】:

        我在 appium-java 客户端中解决了这个问题,如下所示,因为上述方法都不适合我:

        Android 模拟器 API 级别:28

        安卓模拟器版本:9

        Appium java客户端版本:5.0.4

        下面代码中的currentMonthElementWebElement,它代表日期选择器中的月份字段。您可以通过 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();
        

        【讨论】:

          猜你喜欢
          • 2014-11-23
          • 2020-09-24
          • 1970-01-01
          • 1970-01-01
          • 2017-05-23
          • 2018-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多