编写UI自动化时,搜索输入后,模拟键盘Enter键,使用方法androidDriver.pressKeyCode(66),但是实际运行时并没有生效。
解决方法
在使用方法androidDriver.pressKeyCode(66)前,将输入法切换成搜狗输入法。
public void pressEnter(){
String udid = (String)this.driver.getCapabilities().getCapability("udid");
String setCmd = String.format("adb -s %s shell ime set com.sohu.inputmethod.sogou/.SogouIME", udid);
TimeUnit.SECONDS.sleep(3L)
String setCmd = String.format("adb -s %s shell ime set com.sohu.inputmethod.sogou/.SogouIME", udid);
excuteAdbShell(setCmd);
String enter = String.format("adb -s %s shell input keyevent 66", udid);
excuteAdbShell(enter);
//运行后切换回原输入法
String reSetCmd = String.format("adb -s %s shell ime set com.android.adbkeyboard/.AdbIME", udid);
excuteAdbShell(reSetCmd);
}
private void excuteAdbShell(String s) {
Runtime runtime=Runtime.getRuntime();
try{
runtime.exec(s);
}catch(Exception e){
System.out.println("执行命令:"+s+"出错");
}