【问题标题】:Appium: Cannot select button within datepicker in androidAppium:无法在 android 的 datepicker 中选择按钮
【发布时间】:2017-07-09 12:18:58
【问题描述】:

我正在一个 Android 移动应用上使用 appium 进行测试。我的安卓版本是5.1。

日期选择器有一个 SET 按钮,用于通过 xpath 确认日期设置:- //android.widget.FrameLayout[@index='0']/android.widget.Button[@index='6'].

我总是在测试结束时得到NoSuchElementException

谁能解释除了错误的 xpath 之外的可能原因是什么?

代码如下:

     WebElement yearPicker = driver.findElementByXPath(yearView);
     yearPicker.click();
     // ... I omit the touch actions here
     WebElement set = driver.findElementByXPath("//android.widget.Button[@index='6']");
     set.click();

这里是日期选择器的外观和xml结构:

【问题讨论】:

  • 你能添加屏幕截图和代码sn-p吗?
  • 我已经发布了一个答案,希望对你有帮助:)

标签: java android automated-tests appium


【解决方案1】:

由于日期选择器用户界面因设备而异。 选择日期后最好按回车键。如果对您有用,我建议使用第一种方法。即使 UI 发生变化,如果您按 ENTER 键 而不是 Set/Done/OK 等,它也会起作用

您可以通过两种方式做到这一点:

  1. 按回车键

    driver.longPressKeyCode(66);
    

  1. 通过查找元素:

      Thread.sleep(2000);
    

    WebElement setButton=driver.findElementByXPath("//android.widget.Button[@text='Set']"); setButton.click();

【讨论】:

  • 我认为 pressKeyCode 和 longPressKeyCode 函数在我的版本中已被弃用。目前,我正在使用 java 客户端 5.0.0 beta3
【解决方案2】:

可能是元素的位置在它出现之前就做好了,我建议你使用

Thread.sleep(5000);

开始行动之前。

【讨论】:

    【解决方案3】:

    您可以使用资源 id 'button1' 例如driver.findElementById("button1")

    【讨论】:

      【解决方案4】:

      试试这个://android.widget.FrameLayout/android.widget.Button[contains(@resource-id,"button1") 和 contains(@text,"Set")]

      其次,每个设备的日期选择器都不同。 第三,将索引放在最后。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-05
        • 2018-06-25
        • 2018-11-06
        • 1970-01-01
        • 2018-08-31
        • 2018-09-17
        • 2018-07-08
        相关资源
        最近更新 更多