【问题标题】:Running Selenium Nunit tests on Teamcity vs. locally在 Teamcity 与本地运行 Selenium Nunit 测试
【发布时间】:2017-11-02 21:06:20
【问题描述】:

我正在我的服务器上本地运行的 TeamCity 服务器上运行 Selenium Nunit 测试。我遇到的问题是有些测试通过了,有些则失败了。但是,当我通过手动打开视觉工作室并从那里运行测试来运行相同的测试时,它们似乎通过了。

我尝试重启 TeamCity 服务器,尝试清理所有文件。删除文件并重建所有内容,但似乎没有任何效果。测试并让它们运行没有任何问题,只是测试失败了断言,而当我通过 Visual Studio 手动运行它们时,相同的测试通过了断言。

有什么可能导致这种情况的想法吗?

【问题讨论】:

    标签: selenium nunit teamcity


    【解决方案1】:

    一种可能是您的 TeamCity 使用的 NUnit 版本与您的本地系统不同。另一个是 TC 默认生成一个 NUnit 项目文件并使用它运行测试,而不是直接执行程序集。

    【讨论】:

    • 嘿查理,感谢您的意见!我认为您的第二点可能是有效的,因为我正在使用 Nuget Installer 恢复所有包。关于如何解决我的问题的任何想法?此外,我注意到问题可能出在 Selenium Webdriver,因为我查看了一些失败测试的堆栈跟踪,它说某个元素不可点击。但是,当我在本地运行相同的测试时,我没有遇到这个问题......所以也有点困惑。
    • 我不是 TC 用户,但我在另一个线程上读到,他们有一个晦涩的设置,导致它运行测试更像是你自己做的方式,只需要命令上的程序集行而不是生成项目。很抱歉,我无法使用谷歌找到它,但也许其他人知道它是什么。 :-(
    【解决方案2】:

    我在使用 Teamcity 服务器时遇到了同样的问题,我的配置是带有 Nunit 和 Selenium Webdriver 的 Visual Studio。

    您可以做的,帮助我的是为页面上动态加载的那些元素设置等待方法。当 TeamCity 代理在 VM 上运行构建时,测试以无头模式运行,而 TeamCity默认情况下,配置没有实现 Wait/Thread.Sleep。 @chillax786

    【讨论】:

    • 谢谢,@Pacurar Gabriel!从控制台而不是作为服务运行 TeamCity 代理也有帮助
    • @chillax786 如何实现,听起来不错?谢谢
    • 您可以通过打开任务管理器并通过转到任务管理器的服务部分停止 TeamCity 构建代理来完成此操作。然后从命令行你可以使用它来启动 TeamCity 代理 c:\teamcity\buildagent\bin\agent.bat start
    • 似乎那些失败的我们一次又一次地失败,将状态更改为通过(为单个项目工作),但由于我需要同时运行多个项目,我需要以这种方式配置我猜是每个单独的虚拟机,无论如何,再次感谢您的意见。
    • 您还可以设置多个 TeamCity 代理同时运行不同的项目
    【解决方案3】:

    如果带有不可点击元素的特定测试始终为假,那是因为您在 TC 服务器上使用的 Web 驱动程序的分辨率与本地不同。

    如果此测试有时会抛出此错误,那是因为您的网站在 TC 服务器上的响应速度比在本地更快,因此有时您无法点击您的元素,有时您可以。

    您必须确保(在代码中的某处)在使用元素时可以点击它们。

    我在 SPA 网站上遇到过这类问题。

    我写了一个不可见的跨度,我在其中标记我的页面真的可以使用了。

    添加了那个不可见的跨度后,我再也没有看到过这个问题。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 2013-11-08
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多