0

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

  1. 测试开始 -> Firefox 启动(Windows 机器)
  2. 登录网站(Windows 机器)
  3. 在 Linux 服务器中运行命令
  4. 返回 Windows 框上正在运行的命令/测试。

或者,我可以弄清楚如何从 Windows 机器远程运行这些命令,但我不期待这样做。

4

2 回答 2

1

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

根据您的评论更新答案
两种方式的共同部分(我认为您已经知道)在您的 java 代码中,您应该拥有执行步骤 1 和 2 的 webdriver/selenium 命令的代码。您的 java 代码也应该包含逻辑/code 作为步骤 3 执行 linux 命令。步骤 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 命令发送到在 10.0.0.1 端口 4444 上运行的 selenium 服务器。然后您的测试将在 Windows 机器中执行。为此,您的 linux 服务器和 windows 机器应该在同一个网络中。

方法 2 使用网格。

和上面一样,但是不要给出 windows 机器的 ip/dns 名称,而应该给出集线器机器的 ip/dns 名称。您还应该将 Windows 机器注册为该集线器的 RC。

于 2013-01-15T16:09:50.890 回答
0

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

于 2021-08-05T12:59:43.603 回答