当前位置: 首页 > 知识库问答 >
问题:

在节点计算机上执行批处理文件-Selenium网格

鲁泰宁
2023-03-14

是否有一种方法可以使用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);

共有2个答案

林雅畅
2023-03-14

克里希南·马哈德万的回答是一个很好的指南,让我开始了。我使用他的步骤#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();
吕向阳
2023-03-14

这是你怎么做的。

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

这基本上解决了您的用例。

 类似资料:
  • 我想执行一个批处理文件 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 和节点