【问题标题】:PhantomJS: Slow from CI(Jenkins) server, but faster when executed from developers machine(Windows)PhantomJS:CI(Jenkins)服务器速度慢,但从开发人员机器(Windows)执行时速度更快
【发布时间】:2018-07-04 17:10:37
【问题描述】:

我很难弄清楚为什么 selenium 测试用例使用 phantomjs ghostdriver 运行缓慢。当开发人员针对开发环境运行测试用例时,它运行得更快(完成 5 个测试用例需要 1 小时),但从 jenkins 运行时,需要 4 小时。

我在开发机器上关闭了IPV6,也尝试切换到1.9.1版本,但所用时间仍然没有改善。

詹金斯机器

phantomJS:1.9.2 詹金斯服务器:RHEL 5.6 64 位 JDK:1.7

开发机器

操作系统:Windows 7 64 位 JDK:1.7 phantomJS:1.9.2

有人可以帮忙吗?

提前致谢

【问题讨论】:

    标签: selenium jenkins phantomjs


    【解决方案1】:

    您是否在每个测试用例之后使用 driver.quit() 或 phantom.exit(),因为 phantomJS 进程不会自动终止。如果不是,那么这可能是减慢测试用例的原因。

    【讨论】:

    • 但是相同的测试用例在开发者机器上运行只需要很短的时间,但在 linux 上需要很多时间。我尝试禁用 IPV6,更改为版本 1.9.1,但没有使用..无论如何都会尝试你所说的@Juli。
    【解决方案2】:

    如果您的测试没有退出驱动程序,那么一段时间后,您的 jenkins 盒子的内存中将会有很多打开的浏览器。

    例如,每个测试开始,然后在某处断言 false 并死亡,留下一个未关闭的驱动程序。这些往往会在一段时间后累积。

    取决于您的测试框架。除了将每个测试包装在自己的 try/catch 块中之外,可能还有其他很好的解决方案。

    py.test 具有出色的夹具功能。您可以有一个 phantomjsdriver() 固定装置为每个测试打开浏览器,然后在测试完成后(安全地,或从 False 断言中止)它可以完成并关闭驱动程序。

    伪代码示例:(py.test、python、selenium) @pytest.fixture def phantomdriver(request): driver = webdriver.phantomJS() def fin(): driver.close() request.addfinalizer(fin) 在这种情况下,每一个使用这个fixture的测试,不管它如何退出,最终都会调用finilizer fin() 来关闭它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多