如何解决Selenium Webdriver+AndroidDriver无法点击设备返回按钮的问题
解决AndroidDriver无法点击设备返回按钮的问题
我之前也碰到过类似的场景,结合你给出的依赖版本(Java client 5.0.1、Selenium 3.6.0),给你几个亲测可行的解决方案:
方案1:切换到Native上下文后执行操作
如果你的Driver当前处于WebView的WEBVIEW_xxx上下文,直接调用系统返回键可能不会生效——因为WebView上下文下的操作是针对网页的,而非原生系统控件。你需要先切换到原生应用上下文:
// 获取所有可用的上下文集合 Set<String> contextHandles = driver.getContextHandles(); // 遍历切换到NATIVE_APP上下文 for (String context : contextHandles) { if (context.equals("NATIVE_APP")) { driver.context(context); break; } } // 执行返回键操作 ((AndroidDriver<AndroidElement>) driver).pressKeyCode(AndroidKeyCode.BACK); // 若后续需要回到WebView,再切换回对应的WEBVIEW_xxx上下文即可
方案2:直接传入返回键的数值码
有时候AndroidKeyCode枚举可能存在版本兼容问题,你可以直接传入返回键对应的数值(BACK键的数值是4)来绕过枚举类的问题:
((AndroidDriver<AndroidElement>) driver).pressKeyCode(4);
方案3:使用sendKeyEvent方法替代
在Java Client 5.x版本中,sendKeyEvent方法也是有效的系统按键触发方式,你可以尝试替换成这个方法:
((AndroidDriver<AndroidElement>) driver).sendKeyEvent(AndroidKeyCode.BACK);
额外排查点
- 确认你的Appium服务版本和Java Client版本匹配:Java Client 5.0.1建议搭配Appium 1.7.2及以上版本,版本不兼容也可能导致按键操作失效。
- 确保设备/模拟器处于可交互状态,没有被弹窗或其他控件遮挡返回键的触发。
内容的提问来源于stack exchange,提问作者Prarna Dhar
相关产品推荐
相关产品推荐

