原因:
开发又把 m5x 加回来了。。。
解决方案:
切换 webview 操作时,另启动一个线程,执行下面的代码即可,手动重定向端口号到 app 实际的 webview 的名字即可,就能正常的切换 webview 了,算是曲线救国了
if (!"NATIVE_APP".equals(driver.getContext())) {
return;
}
new Thread(() -> {
try {
String cmd = "adb forward --list | grep webview_devtools_remote | grep -v m5x";
String curlCmd = null;
while (!Terminal.execute(curlCmd).contains("Browser")) {
// 605dcd5b tcp:17778 localabstract:webview_devtools_remote_8752
// execute()在终端执行 shell 命令
String result = Terminal.execute(cmd);
if (result.length() > 0) {
String tcpPort = result.substring(result.indexOf(" ") + 5, result.lastIndexOf(" "));
curlCmd = "curl http://localhost:" + tcpPort + "/json/version";
// adb -s 605dcd5b forward tcp:17778 localabstract:webview_devtools_remote_m5x_8752
String newCmd = "adb -P 5037 -s " + new StringBuffer(result).insert(result.lastIndexOf("_"), "_m5x").insert(result.indexOf(" "), " forward");
Terminal.execute(newCmd);
}
Thread.sleep(2000);
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();