问题:windows服务驱动的ui自动化测试

我正在尝试清理围绕我们的 UI 自动化测试的过程。

现在我们有一个控制台应用程序,我们在使用 Apache Thrift 侦听 RPC 调用的服务器上运行,根据正在运行的测试,此应用程序将使用用户指定的浏览器(Chrome、IE、Firefox)启动 Selenium,或者它将启动我们的 WPF 桌面应用程序。

我的目标是允许这个控制台应用程序作为 Windows 服务运行,用于几个目的:

1.用户不再需要登录服务器。

2.不再需要第三方应用程序来阻止屏幕保护程序激活。

  1. 将有效地允许测试在一个场中运行,以便多个可以并行运行

所以我的问题是提供了一个没有活动用户会话并且该服务正在运行的服务器,该服务是否可以使用 Web 浏览器和 WPF 应用程序同时启动 Selenium 并能够驱动它们。

如果不可能,那么以编程方式登录服务器呢?

解答

您可以做到这一点的唯一方法是使用 PhantomJS(或其他一些无头浏览器)。 Windows 服务无法访问在桌面上运行的浏览器(尽管它们曾经回到 Windows XP 和 Windows 2000 Server 时代)。从那时起,即使您在服务上看到“与桌面交互”复选框,微软也锁定了这些权限,我认为它不会起作用。

此外,Selenium Grid 服务器必须在远程服务器的前台运行(出于相同的原因)。唯一的例外是,在网格上使用 PhantomJS,您的网格服务器可以作为服务运行以启动无头浏览器。当然,将网格节点作为服务和网格集线器作为服务运行并不是一件容易配置的事情(使用 YAJSW),但它是可行的。如果你走那条路,你的里程可能会有所不同,因为我还没有真正尝试过。这个想法是您可以编写批处理 DOS 脚本来启动/注册 YAJSW 以将网格作为服务运行。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐