【问题标题】:Ui Automation testing driven by windows service由windows服务驱动的ui自动化测试
【发布时间】:2014-01-25 17:23:59
【问题描述】:

我正在尝试清理 UI 自动化测试的流程。

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

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

  1. 用户不再需要登录到服务器。
  2. 不再需要第三方应用程序来阻止屏幕保护程序激活。
  3. 将有效地允许在场中运行测试,以便可以并行运行多个测试

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

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

【问题讨论】:

  • 旁注:UI 程序(浏览器、常规 WPF/WinForms)在无头会话中可能表现得很奇怪......如果您真正想要测试的东西在服务的上下文中工作,请务必尝试。
  • @AlexeiLevenkov 鉴于您的评论,它应该能够在没有特殊代码的情况下无头运行应用程序吗?当然,我确实计划确保我们的测试按预期运行。
  • 我不知道(我也认为没有特殊的代码可以使此类会话对应用程序更友好),但应用程序本身在以这种方式启动时可能会表现得很奇怪。旁注:我不会自己发明/配置/调试,而是搜索可以在服务器端运行自动化测试(包括 UI 测试)的现有系统。 IE。 TFS 可以做到...

标签: c# wpf selenium service ui-automation


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这就是我所发现的,看起来它部分工作,但特定网站弹出了一个 Windows 身份验证。是时候找到一种不同的方法来做到这一点了。
猜你喜欢
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多