【问题标题】:Tests slowing down while going through select combinations通过选择组合时测试速度变慢
【发布时间】:2017-08-23 00:34:11
【问题描述】:

我正在使用 Python 和 Selenium 来测试我的店面的自定义选项,并注意到随着时间的推移测试速度明显变慢。

具体来说,我在页面上有很多<select>标签,每个标签都有很多<option>标签作为子标签。 Ajax 组合中的每次更改都会查询一个新价格,Selenium 通过显式等待加载动画首先出现然后消失,然后再切换到下一个选项。

由于我有 5 个不同的选择字段,每个字段有 3-10 个选项,因此整个测试需要一段时间才能运行。然而,早期的组合和后来的组合之间似乎存在巨大差异 - 虽然早期的组合通常加载不到一秒钟,但最后的组合可以在更改价格之前显示长达 20 秒的加载动画。

问题似乎与运行测试的机器无关,因为 CPU 和内存使用率都适中。我很好奇随着时间的推移可能导致性能下降的原因 - 如果有人有想法,我将不胜感激。提前致谢!

【问题讨论】:

  • 您使用 selenium 控制哪个浏览器或驱动程序二进制文件?如果实例化驱动程序二进制文件所需的时间少于等待时间,您可能希望考虑编写脚本以在每次迭代时重新实例化驱动程序二进制文件。 Cookie 和其他数据可以传递给驱动程序二进制文件的新实例。
  • 我正在使用 Chrome Webdriver,因为 PhantomJS 似乎加剧了这个问题。您能否详细说明重新实例化驱动程序的含义?来自实例的相关数据将是登录会话和选择的当前状态
  • 基本上编写脚本退出并为每个组合创建一个新的Chromedriver。 driver.quit() : driver = webdriver.Chrome('/path/to/chromedriver').

标签: python selenium web-scraping web-crawler automated-tests


【解决方案1】:

许多 selenium 用户的测试受到动画的影响。要单独测试不断变化的价格,最好禁用动画。即使您打算测试动画,有时使用 selenium 的更复杂的体验/结果是分层的,并且从测试中逐个删除变量将提供更好的控制,并让您有机会单独测试每一层。

http://marcgg.com/blog/2015/01/05/css-animations-failing-capybara-specs/

此外,我遇到过某些版本的驱动程序二进制文件变慢的情况,这主要是由于我的测试环境本地化的原因。它可以帮助您使用一种设计模式,该模式为每个测试实例化一个新的驱动程序二进制文件,并在测试完成时销毁驱动程序。这样做会在执行代码时增加一些额外的开销;但是,这是一个可估计的时间,可以包含在预期中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2019-11-24
    • 2023-03-19
    相关资源
    最近更新 更多