是否有一种方法可以使用Selenium Grid来执行位于远程节点机器上的批处理文件以更改主机文件?
VM1包含代码,并充当中心VM2运行Chrome节点VM3运行火狐节点VM4运行IE节点
每个VM上都存在一组批处理文件,但是,按原样运行时,只有VM1执行批处理文件。如何告诉Selenium在正确的节点上执行批处理文件?
FWIW,我现在通过詹金斯执行任务。
最初编写代码时,我只是通过Eclipse在本地运行测试,而没有使用网格。也就是说,我编写了一个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);
克里希南·马哈德万的回答是一个很好的指南,让我开始了。我使用他的步骤#1-3编写一个servlet在结束节点上运行。
对于步骤4和步骤5,我使用了不同的方法。与其让客户机尝试找出Selenium节点的IP并直接与之通信,不如让客户机与集线器通信,然后让集线器代理将请求发送到正确的节点。
幸运的是,已经有人完成了在selenium-netge-扩展项目中在集线器上编写代理的工作。huh-扩展
组件将代理向Selenium Hub发出的以下格式的请求:
/grid/admin/HubRequestsProxyingServlet/session/${SESSIONID}/YourServletName
然后使用路径/extra/YourServletName
将它们重新路由到正确的节点。
您可以通过以下方式从客户端代码中获取会话ID:
RemoteWebDriver driver;
String sessionId = driver.getSessionId().toString();
这是你怎么做的。
这基本上解决了您的用例。
我想执行一个批处理文件 D:\apache-tomcat-6.0。20\apache-tomcat-7.0。30\bin\shutdown。球棒 它位于我的服务器上。 我应该如何编写我的文件?
我想创建一个拓扑,其中一个喷口发出单词,一个bolt基于这些单词创建一个以word命名的目录。 我有两个supervisor节点,如果word以“a”到“l”开头,则在一个节点上创建目录,否则在另一个节点上创建目录。例如,如果word是“确认”,则将在一个节点上创建一个目录,如果word是“机器”,则将在另一个节点上创建目录。 附注。我使用Pyleus(https://github.com/yel
从PowerShell执行远程服务器参数化批处理文件。 不会在远程计算机上抛出错误或执行命令。 bat文件中的脚本是带有参数的,只能通过命令提示符执行。
问题内容: 我有一个简单的批处理文件。我想 从Jenkins调用/运行/执行该文件 。 Jenkins中是否有相同的插件? 如何从Jenkins执行批处理文件?如果有相同的任何教程或文档。 问题答案: 在Linux上,转到jenkins作业,转到配置,添加构建步骤“ execute shell”,然后键入脚本的名称。请确保您的文件是可执行文件(chmod 777 yourscript.sh),并且
我想从R脚本执行批处理文件。该文件位于类似于“网络\路径\到\批处理\文件”的目录中。bat。 我知道我可以使用R中的system命令来运行DOS命令,但我不能简单地使用system(“start file.bat”)。那么,如何最好地使用R脚本来执行这个批处理文件呢?
我想在3个不同的节点上执行我的脚本 对于启动集线器,我使用命令:-java-jar selenium-server-standalone-2.53.0.jar-role hub-port 4444 和节点