使用 Appium 时,Android 物理设备中的键盘并不总是隐藏

Posted

技术标签:

【中文标题】使用 Appium 时,Android 物理设备中的键盘并不总是隐藏【英文标题】:Keyboard in Android physical device isn’t always hidden while using Appium 【发布时间】:2016-04-28 19:32:23 【问题描述】:

当我想隐藏键盘时,(因为如果我在单击键盘下的按钮时不隐藏它,则会按下键盘上的数字而不是确认按钮)有时它会被命令隐藏driver.hidekeyboard(); 和其他时候它会自动隐藏。

其他时候它告诉我

处理命令时出现未知的服务器端错误。 (原错误:软键盘不存在,无法隐藏键盘)

【问题讨论】:

【参考方案1】:

使用adb命令查看键盘是否弹出

adb shell dumpsys input_method | grep mInputShown 

输出:mShowRequested=true mShowExplicitlyRequested=false mShowForced=false mInputShown=true

如果mInputShown=true 则弹出是软件键盘。 然后使用driver.pressKeyCode(androidKeyCode.BACK);

PS:请不要使用driver.navigate().back(),因为它在所有设备上的行为可能并不相同。

【讨论】:

点击后:Emnas-Mac:~ Emna$ adb shell dumpsys input_method | grep mInputShown 我得到以下输出。 mShowRequested=false mShowExplicitlyRequested=false mShowForced=false mInputShown=false 所以我应该把 driver.pressKeyCode(AndroidKeyCode.BACK);在我想要使用键盘的所有脚本中? 如果 mInputShown=false 那么你不需要调用 driver.pressKeyCode(AndroidKeyCode.BACK); 键盘随机出现在同一个屏幕上的问题我有3个字段我必须使用sendkeys("");不稳定 好的,那么为了你的脚本和应用程序之间的同步,在检查屏幕上是否存在键盘之前先休眠,如果存在则按 AndroidKeyCode.BACK 否则执行下一个命令 我也有以下问题:我不知道为什么键盘有时不能正常工作:***.com/questions/34989966/…【参考方案2】:

尝试在模拟器和实时设备上工作时遇到了类似的问题。一个显示了键盘,另一个没有。因此,driver.hideKeyboard(); 曾经因后者而失败。只需确保键盘在这两种情况下都会出现然后隐藏即可。

driver.getKeyboard();
driver.hideKeyboard();

这对我来说很好。希望对您有所帮助。

【讨论】:

同样的问题,driver.getKeyboard(); driver.hideKeyboard();没有解决我的问题!【参考方案3】:

@Emna 如果 hidekeyboard 不起作用,请在输入两个字段后尝试。 driver.navigate().back(); 或将其包装为

public void clickDeviceBackButton()
        driver.navigate().back();
    

并在您的测试用例中调用clickDeviceBackButton()

【讨论】:

尝试在页面上找到 AS tatic Text 元素并在此处找到 .click()。这会关闭键盘【参考方案4】:

尝试在页面上找到一个静态文本/链接元素,然后在那里 .click()。这将关闭键盘。

【讨论】:

以上是关于使用 Appium 时,Android 物理设备中的键盘并不总是隐藏的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Appium 打开推送通知并阅读 Android/iOS 设备中的文本?

如何使用appium和python控制Android设备?

如何使用 Appium 滚动 Robot Framework 以在 Android 设备上测试应用程序

Appium,Mocha,Android,JS - 运行测试时是否可以通过命令行(如android版本)传递设置?

如何使用 Charles Proxy 配置 Appium Android?

Appium 和虚拟 Android 设备所需的功能:SessionNotCreatedException 错误