![](/img/trans.png)
[英]While using Selenium Grid, How do we access downloaded file in Node machine from Hub machine?
[英]Execute batch file on Node machine - Selenium Grid
有没有办法使用 Selenium Grid 执行位于远程节点机器上的批处理文件来更改主机文件?
VM1 包含代码并充当集线器 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);
这是你如何做到的。
这应该基本上可以解决您的用例。
上面来自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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.