1

好的,这是一个棘手的问题。我正在尝试使用一些 Windows 7 VM 设置 Selenium Grid 2 来运行 Webdriver 测试。为了自动化整个过程,我使用了一些通过 ssh 连接到 VM 的 ant 脚本来启动/停止/重新配置节点。

一切正常,节点可以向集线器主机注册并执行测试。唯一的问题是在测试运行期间我没有看到任何浏览器窗口。可以看到进程,看到正在执行的测试日志,但是没有图形界面。

另一方面,如果我通过 Windows 手动启动节点,一切正常。

我想问题是在cygwin下执行的进程无法启动Windows显示,但在这种情况下,不应该抛出错误吗?我在想的另一个选择是Webdriver使用HTMLunit作为后备,但是......为什么只要测试持续并消耗CPU和内存,我就会看到firefox进程?

4

2 回答 2

2

通过 ssh,您只能与 Windows 的 stdin、stdout 和 stderr 流进行交换。ssh 连接正在隧道化这些流,仅此而已。你看不到 Windows 桌面界面,桌面对象存在于 Windows 机器上,程序(这里是浏览器)连接到它,所有的 GUI 交互都在那里。

  1. 如果 GUI 不需要任何用户交互,那么一切都很好。对话框被创建,程序运行,一旦完成,对话框被应用程序销毁并且应用程序关闭。就我们的应用程序的 GUI 而言,没有什么是阻塞的。

  2. 如果您的程序需要在已创建但不可见的对话框中执行用户操作,您的程序将在那里等待您的交互继续进行。您将在任务管理器中看到该过程,除了等待之外什么都不做。由于您无权访问创建和虚拟“显示”对话框的 Windows 桌面,因此程序似乎挂起。

典型的情况 2 是,如果您远程运行程序等待用户做某事,比如记事本。您可以启动记事本,它会被生成,然后它会等待您输入一些文本或关闭它。

在您的 Selenium 测试中,您是第一种情况:使 GUI 工作所需的所有浏览器交互实际上都是由 Selenium 服务器完成的,该服务器为您执行导航点击和程序退出。他们的 GUI 实际上是通过浏览您的测试 Web 服务器来实现的,您只是看不到它。

Microsoft 网站上有关DesktopsDesktop Creation的一些进一步阅读。

于 2012-05-07T14:34:44.893 回答
0

如果您想查看测试并获得有效的屏幕截图,则需要让用户登录并且这些测试需要以该用户身份运行。一切都必须通过该单个桌面会话运行,因此您无法使用 RDP 远程连接到计算机。最好的办法是使用 VNC,因为它会连接到已经建立的会话。

于 2012-05-13T14:51:49.590 回答