使用 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 滚动 Robot Framework 以在 Android 设备上测试应用程序
Appium,Mocha,Android,JS - 运行测试时是否可以通过命令行(如android版本)传递设置?