【问题标题】:Execute batch file on Node machine - Selenium Grid在节点机器上执行批处理文件 - Selenium Grid
【发布时间】:2016-10-14 16:52:47
【问题描述】:

有没有办法使用 Selenium Grid 执行位于远程节点机器上的批处理文件来更改主机文件?

VM1 包含代码并充当 Hub VM2 运行 Chrome 节点 VM3 运行 Firefox 节点 VM4 运行 IE 节点

每个 VM 上都存在一组批处理文件,但是,按原样运行时,只有 VM1 正在执行批处理文件。如何告诉 Selenium 在正确的节点上执行批处理文件?

FWIW,我现在正在通过 Jenkins 执行作业。

当我最初编写代码时,我只是通过 Eclipse 在本地运行测试,而不是使用 Grid。话虽如此,我编写了一个 AutoIT 脚本来处理该任务。我在本地运行时使用的代码是:

String env = StoredVariables.getenvironment().get();

if (env.equals("Beta Offline"))
{
    env = "BetaOffline";
}
if (env.equals("Live Offline"))
{
    env = "LiveOffline";
}

System.out.println("Set hosts file to " + env + " via AutoIT");

Thread.sleep(3000);

Runtime.getRuntime().exec(StoredVariables.getautoIT().get()+"HostsSwitcher.exe " + StoredVariables.getautoIT().get() + " " + env);

【问题讨论】:

    标签: java selenium selenium-webdriver selenium-grid2


    【解决方案1】:

    这就是你的做法。

    1. 首先,您构建一个自定义 servlet,其中包含您共享的代码逻辑并且可以通过 GET 或 POST 方法调用。
    2. 您现在需要在启动时将 servlet 注入节点。请参阅 here 了解如何执行此操作。
    3. 然后您启动节点,并将自定义 servlet 注入其中。
    4. 您现在可以开始运行测试,并在需要在节点上执行批处理的点上查询网格以找出您的测试路由到的节点 IP 和节点端口。 [您可以参考我的this博客文章了解如何查询网格以获取您的测试路由到的节点的IP和端口。]
    5. 使用从 (4) 中检索到的 IP 和 PORT,您可以触发 GET 或 POST 以从您的测试代码中实际触发批处理命令。

    这应该基本上解决了你的用例。

    【讨论】:

      【解决方案2】:

      上面来自Krishnan Mahadevan 的答案是一个很好的指导,让我开始了。我使用他的步骤 #1-3 编写了一个在端节点上运行的 servlet。

      对于第 4 步和第 5 步,我使用了不同的方法。与其让客户端尝试获取 Selenium 节点的 IP 并直接与其通信,不如让客户端与集线器进行通信,然后让集线器将请求代理到正确的节点。

      幸运的是,其他人已经在 selenium-grid-extensions 项目的集线器上完成了编写代理的工作。 hub-extensions 组件将代理向 Selenium Hub 发出的以下格式的请求:

      /grid/admin/HubRequestsProxyingServlet/session/${SESSIONID}/YourServletName

      然后将它们重新路由到路径为/extra/YourServletName 的正确节点。

      您可以使用以下代码从您的客户端代码中获取会话 ID:

      RemoteWebDriver driver;
      
      String sessionId = driver.getSessionId().toString();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多