【问题标题】:How to check a geckodriver is running on a remote machine?如何检查 geckodriver 是否在远程机器上运行?
【发布时间】:2019-06-08 06:18:37
【问题描述】:

我正在使用 Selenium / Maven / testng 编写自动测试。

测试在虚拟机 Windows Server 2016 Standard 上执行。

我想检查任务列表是否正在运行 geckodriver。我愿意:

    String line;
String pidInfo ="";

Process p =Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");

BufferedReader input =  new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((line = input.readLine()) != null) {
    pidInfo+=line; 
}

input.close();

if(pidInfo.contains("geckodriver.exe"))
{
    // do what you want
}

运行测试后,代码会在本地计算机上执行它们。

如何在虚拟机上执行这样的检查

【问题讨论】:

    标签: java selenium selenium-webdriver automated-tests


    【解决方案1】:

    您的问题没有完全定义。 虚拟机具有操作系统。您的查询中缺少此内容。

    但要给你一个可能合适的答案,通常 VM 是基于 Linux 的。

    您可以在 Windows 上手动执行命令行以获得正确的路径

    where tasklist

    这将为您返回命令的正确路径。如果缺少,请搜索命令并检查 PATH 变量中缺少它的原因(不是标准的 Windows 安装)

    在我的情况下是

    C:\Windows\System32\tasklist.exe

    你在 linux 上执行

    ps aux | grep geckodriver

    在MAC上你也可以试试

    ps aux | grep geckodriver

    但也许这样更好

    ps -jef | grep geckodriver

    在 linux 上获取 ps 命令的正确完整路径并在 MAC 上执行

    which ps

    希望对你有帮助

    其他观点:

    您不应手动使用“\”路径分隔符。我总是会使用

    File.separator 这将为您提供正确的操作系统路径字符

    【讨论】:

    • 虚拟机有Windows Server 2016 Standard
    • 请用您收到的错误更新您的问题。也请分享手动执行tasklist的错误
    • 原帖中传递的参数包括system32和windir,这表明这是针对Windows的。不过,澄清总是好的。
    • @KamilBolc 我已经根据 adickinson 的建议更新了我的答案。希望对您有所帮助
    • 运行测试不会导致错误。问题是我有一个来自本地计算机而不是来自虚拟机的任务列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多