代码之家  ›  专栏  ›  技术社区  ›  Andrei Suvorkov

如何确定测试是在本地运行还是在远程服务器上运行

  •  0
  • Andrei Suvorkov  · 技术社区  · 6 年前

    根据这个 tutorial


    如本教程所示:

    这对所有司机来说都是一种魅力。将此测试移到 远程服务器(例如,我们的Selenium 2云),所有您 您正在将文件从本地计算机上载到远程计算机 而不是仅仅键入路径。

    在远程服务器上,我必须使用:

    driver.setFileDetector(new LocalFileDetector());
    ...
    upload.sendKeys("/Path/to/image.jpg");
    

    而当地人只是:

    upload.sendKeys("/Path/to/image.jpg");
    


    我已尝试确定webDriver的实例:

    WebDriver proxiedWebDriver = ((WebDriverFacade) getDriver()).getProxiedDriver();
    if (proxiedWebDriver instanceof RemoteWebDriver) {
        ((RemoteWebDriver)proxiedWebDriver).setFileDetector(new LocalFileDetector());
    }
    

    但似乎(本地和远程)案例都在使用 RemoteWebDriver 在跑步的时候,因为每次我都会路过 if

    如何确定测试运行的是本地还是远程?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Fenio    6 年前

    要获取远程服务器的地址,可以使用 HttpCommandExecutor

    HttpCommandExecutor ce = (HttpCommandExecutor) ((RemoteWebDriver)driver).getCommandExecutor();
    String remoteAddress = ce.getAddressOfRemoteServer().toString();
    String localAddress = null;
    
    try (Socket socket = new Socket()) {
        socket.connect(new InetSocketAddress("google.com", 80));
        localAddress = socket.getLocalAddress().getHostAddress();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    if (remoteAddress.contains("localhost") || remoteAddress.contains(localAddress)) System.out.println("Local machine");
    else System.out.println("Remote machine");
    

    上面的代码获取远程服务器地址(HUB),并将其与公共IP地址进行比较。如果您运行的是本地或远程服务器,它应该会提供信息