如何使用Selenium Grid在本地运行节点和系统命令上的某些命令

时间:2013-01-15 04:28:06

标签: selenium selenium-webdriver selenium-grid

我正在尝试解决问题,我希望能用Selenium Grid做到这一点,但我不完全确定它是可能的。这是我的问题......我正在使用Selenium WebDriver开发测试用例,我需要在Windows机器上运行测试但是AUT在Linux服务器上运行。我有几个只在Linux上运行的工具,我希望能够在Windows机器上运行一些命令/测试,在Linux服务器上运行其他命令/测试。例如

  1. 测试开始 - > Firefox启动(Windows机器)
  2. 登录网站(Windows机器)
  3. 在Linux服务器中运行命令
  4. 在Windows框中返回正在运行的命令/测试。
  5. 或者我可以弄清楚如何从Windows机器远程运行这些命令,但我并不期待这样做。

2 个答案:

答案 0 :(得分:1)

开箱即用,您无法使用selenium在本地计算机上运行命令。 Selenium / Webdriver是一个浏览器测试工具,只能与浏览器进行交互。

根据您的评论更新答案
两种方式的共同点(我认为你已经知道) 在你的java代码中你应该有webdriver / selenium命令的代码,它们将执行步骤1和2.你的java代码也应该包含执行linux命令的逻辑/代码作为步骤3.步骤4应该再次是你的webdriver命令。
这个测试代码应该从linux服务器运行,这样java命令就会在linux框中执行。

现在唯一的待处理部分是在远程机器中执行测试。

方法1,不使用网格

在Windows机器中启动selenium服务器。将您的java测试指向此机器中运行的selenium服务器。如果您的Windows机器IP是10.0.0.1,您应该将webdriver对象初始化为

WebDriver wd =  new RemoteWebDriver(new URL("http://10.0.0.1:4444/wd/hub"),DesiredCapabilities.Firefox());

这会将所有webdriver命令发送到端口4444上运行在10.0.0.1中的selenium服务器。然后,您的测试将在Windows机器中执行。为此,您的Linux服务器和Windows机器应该在同一个网络中。

方法2使用网格。

它与上面的相同,但是不应该给出windows机器的ip / dns名称,而应该给出hub机器的ip / dns名称。您还应该将Windows计算机注册为该集线器的RC。

答案 1 :(得分:0)

我认为使用 AutoIT 类型的 Windows 框架,我们可以调用 C:\Windows\System32\cmd.exe 来打开命令提示符并运行一些 .bat 文件。如果是 Linux /bin/csh or /bin/bash myscript.sh