在Selenium Grid上运行AutoIT脚本

时间:2014-04-28 16:02:30

标签: java internet-explorer-10 autoit internet-explorer-11 selenium-grid2

如何通过Selenium Grid设置运行AutoIT脚本?

我在所有机器上都有.exe文件,但是需要让Selenium脚本调用它来在网格的每个节点上运行,这可能吗?

3 个答案:

答案 0 :(得分:4)

您的问题(撰写本文时)对于您的网格部署的特定测试设置并不十分详细。因此,无法提出确切的答案,因为这取决于您的环境的设置方式。

最简单的方法是使用PSExec.exe,telnet或SSH从测试执行计算机远程调用节点计算机上的AutoIt。下面给出了一个简单的例子,请注意我没有测试过代码,但是如果需要的话,应该进行一些小的调整。

String cmd = "C:\\LocalMachinePathTo\\psexec.exe \\\\%s -u %s -p %s -i C:\\GridNodeMachinePathTo\\autoit.exe";
Process p = Runtime.getRuntime().exec(String.format(cmd,gridNodeHostName,gridNodeWindowsLoginUserName,gridNodeWindowsLoginPassword);
p.waitFor();

该简单示例假定您使用网格节点计算机的本机本地桌面(或控制台/头)会话来运行自动化测试,而不是使用到网格节点的远程桌面会话。如果是后者,则需要在-se参数之后向psexec.exe提供会话ID。您可以在此处找到有关PSExec.exe的更多信息:

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

提供的代码是一个简单的示例,您可能更喜欢添加其他逻辑来检查测试是在本地还是在网格上执行,如果在本地执行,您的命令可以省略使用psexec并直接调用autoit.exe。

阅读这些博客文章,了解有关使用Selenium网格上的测试运行AutoIt的更多详情/见解:

https://autumnator.wordpress.com/2015/01/22/integrating-autoit-sikuli-and-other-tools-with-selenium-when-running-tests-in-selenium-grid/

https://autumnator.wordpress.com/2011/12/22/autoit-sikuli-and-other-tools-with-selenium-grid/

答案 1 :(得分:0)

这应该适合你:

String cmd = "C:\\PathToExe\\autoit.exe";
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

答案 2 :(得分:0)

我通常将autoit .exe作为资源打包到.jar中。然后你可以做这样的事情:

    // locate an executable script in the resources
    URL res = getClass().getResource("/autoit/autoit_helloworld.exe");
    // locate the script in the filesystem
    File f = new File(res.file);
    assertTrue(f.canExecute());

    Process prog = Runtime.runtime.exec(f.canonicalPath);
    assertEquals(0, prog.waitFor());