【问题标题】:How can you start up RDP and run Selenium Tests?如何启动 RDP 并运行 Selenium 测试?
【发布时间】:2019-03-12 23:08:50
【问题描述】:

我收到了一个对 Selenium 测试的有趣要求,我需要将我的代码 RDP 到服务器中,打开浏览器,然后在上面运行我的测试。

最初我认为是 Browserstack 甚至 Selenium Grid,但要求是实际打开 RDP 会话并通过它运行测试。

有没有办法做到这一点?我想尝试使用 Microsoft UI Automation 之类的东西来打开 RDP 会话,但是我的 Selenium 测试将在启动 RDP 后在本地运行,对吧?我在开始这方面遇到了一些问题,而且似乎找不到一个好的开始。

【问题讨论】:

  • 为什么必须打开 RDP 才能使 Selenium Grid 运行?
  • 哦,不,Grid 是我这样做的一个想法。但是运行测试的整个流程是 - 运行 RDP -> 打开 Chrome -> 运行测试。

标签: c# selenium nunit rdp


【解决方案1】:

RDP 窗口基本上是一个桌面图像,Selenium 无法通过它控制 Web 浏览器。您需要在远程机器上部署 Selenium 测试并从那里运行它们。

【讨论】:

  • 所以没有办法真正打开 RDP 并通过某种远程驱动程序控制网络浏览器?
【解决方案2】:

这在理论上是可能的,但与您描述的方式不完全一样。您似乎在说您想与 RDP 窗口内的事物进行交互,就好像 RDP 窗口是标准浏览器或本机应用程序一样,而其中的事物是 DOM 中的元素。通过在主机上运行 selenium,然后打开 RDP,并在原始主机上单击 RDP 窗口。

不可能像这样(以这种方法需要的方式)直接通过 RDP 进行连接。如果除了安全之外没有其他原因。例如;如果您曾经在 youtube 上看到人们用疯狂的病毒感染虚拟机,以炫耀病毒对虚拟机的破坏性影响,而不会伤害他们被 RDP 编入的计算机。但似乎有一些方法可以通过 RDP 通过 TCP 连接进行通信,这将有助于以其他方式与远程机器进行交互。

此外,您可以只通过 SSH/Enter-PSSession 进入机器,并在 RDP 会话之外的机器之间建立通信通道。如果您在被远程访问的机器上有一个自定义构建的应用程序,您可以使用 System32 库来告诉要单击的主要机器 x y 坐标。然后,在主机上,您可以最大化 RDP 窗口,然后单击提供的 X Y 坐标。

我怀疑这会按照您建议的方式成功地将点击一直发送到虚拟机。如果 Appium 不能以这种方式向下发送点击,您可能需要开发自己的 user32.dll 抽象来使用键盘和鼠标点击的核心 Windows 逻辑来执行点击。

总而言之,这是一个非常深入的项目,(似乎)没有任何努力。我会通过调查我上面提到的一些事情(以及任何其他建议),并解释成本与投资回报的关系,来反驳任何提出这个要求的人。

希望他们只会让您使用 Selenium Grid 与 VM 或连接的设备进行通信,以推出应用程序并根据行业标准方法对其进行测试。

这是一个有趣且相关的阅读:https://superuser.com/questions/130552/tunneling-a-tcp-ip-connection-through-remote-desktop-connection

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 2014-10-02
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多