【发布时间】: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