我正在运行本地 BrowerStack 测试,为此我必须实例化与本地服务器和 BrowserStack 的连接。此类测试的说明可参见 here 。
我正在尝试将进程声明为变量
Process serverConnection = new ProcessBuilder("C:\\Users\\folder\\BrowserStackLocal.exe","**Password**", serverURL + ",80").start();
查看任务管理器,我发现这一行创建了两个 BrowserStackLocal.exe 进程,我认为这是由于它们管理登录的方式所致。有没有办法可以引用第二个 BrowserStackLocal.exe 进程?
在清理过程中我调用
serverConnection.destroy();
但这仅仅结束了其中一个进程。现在我也打电话
Runtime.getRuntime().exec("taskkill /F /IM BrowserStackLocal.exe");
这成功结束了另一个实例,但我更愿意保留引用并调用 .destroy()。
任何有关如何实现这一目标的建议将不胜感激。
编辑:我几乎可以肯定这两个进程的原因是登录功能,因为当我调用错误的密码时,只会打开一个窗口。第二个进程似乎是根据其 CPU 使用情况执行所有计算的进程。
编辑 2:使用 BrowserStackLocal 进行进一步测试,确认是登录过程创建了一个附加进程。解决方案可以确定一种从第一个进程跟踪第二个进程实例化的方法。
编辑3:这些进程似乎是链接的,因为当我从任务管理器中退出其中一个进程时,有时另一个进程会自动关闭。
最佳答案
事实证明,这就是 BrowserStack 处理登录过程的方式,而且这是不可避免的。
关于java - BrowserStackLocal.exe 从 Java 执行时会创建 2 个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186985/