如何通过Selenium Grid设置运行AutoIT脚本?
我在所有机器上都有.exe文件,但是需要让Selenium脚本调用它来在网格的每个节点上运行,这可能吗?
答案 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/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());