gpt4 book ai didi

python - selenium webdriver 的 tcp/ip 端口耗尽

转载 作者:可可西里 更新时间:2023-11-01 02:42:59 24 4
gpt4 key购买 nike

我正在使用 selenium webdriver(用 Python 编写)进行一套测试。被测试的页面包含一个表单,该表单根据在其中一个选择框中选择的值更改其显示的字段。这个选择框有大约 250 个选项。我有一个测试(通过 Nose 运行,尽管这可能无关紧要)遍历选择框中的所有选项,验证表单是否为每个选定选项显示了正确的字段。

问题是对于每个选项,它都通过 selenium 调用:

  • 点击选择选项
  • 7 个字段的 find_element 和 is_displayed
  • 为选择框中的项目查找元素
  • 获取选择框中每个选项的属性和文本

结果是(大约)250 * (7 * 2 + 1 + 2 * 250),或 128,750 个对运行测试的 webdriver 服务器的不同请求,所有这些请求都在大约 10 或 15 分钟内完成。在某些情况下,这会导致运行测试的机器上的客户端端口耗尽。这一切都是通过一个测试框架运行的,该框架抽象了诸如如何解析选择框、何时创建新页面对象以及其他一些事情,因此测试代码中的优化要么意味着将所有这些都搞砸要么扔掉此测试的框架并手动执行所有操作(为了我们测试代码的可维护性,这不是一个好主意)。

我对解决方案的一些想法是:

  • 尝试以某种方式合并或重用与 webdriver 服务器的连接
  • 以某种方式在运行时调整 urllib2httplib 的配置,以便 selenium 打开的连接超时或更快地被终止
  • 系统独立(或至少对于所有具有操作系统切换或类似功能的系统都可实现)主动跟踪和关闭由 selenium 打开的端口的机制

正如我上面提到的,我无法对页面的解析或处理方式做太多调整,但我可以控制子类化/调整 WebDriverRemoteConnection 随心所欲。有没有人对如何处理上述任何想法或我没有想出的任何想法有任何建议?

最佳答案

在尽可能多的少量塑料炸药解决了忘记 key 的问题后,我实现了一个解决方案。我创建了一个类来跟踪资源列表和它们添加到其中的时间,在达到限制时阻止,并在它们的时间戳超过超时值时删除条目。然后,我创建了此类设置的一个实例,限制为 32768 个资源,超时为 240 秒,并让我的测试框架在每次调用 webdriver.execute() 时向列表中添加一个条目,或者执行了一些其他操作(数据库查询、REST 调用)。它不是特别优雅,而且相当随意,但至少到目前为止,它似乎可以防止我的测试触发端口耗尽,同时不会显着减慢之前未导致端口耗尽的测试。

关于python - selenium webdriver 的 tcp/ip 端口耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com