【问题标题】:problem: Socket error [Address already in use] in python/selenium问题:python/selenium 中的套接字错误 [地址已在使用中]
【发布时间】:2011-05-30 12:44:13
【问题描述】:

我有一个麻烦的问题socket.error 错误:[Errno 10048]:地址已在使用中。在使用 Selenium 和 Python 进行自动化测试期间,通常只允许使用每个套接字地址(协议/IP 地址/端口)。这个问题非常有趣,它在一台机器(Linux)上运行正常,但在另一台机器(WindowsXP)上会产生这个错误。 我要补充一点,在重新安装系统并重新设置后出现问题 - 使用以前的配置一切正常。 是不是我忘记了什么?有没有人遇到过这样的问题?

有没有人知道如何处理这个问题?

当前配置/库:

python 2.7、numpy、selenium.py

【问题讨论】:

  • Selenium 默认在 4444 端口上运行

标签: python selenium-rc socketexception


【解决方案1】:

如果您多次打开/关闭套接字,它可能处于 TIME_WAIT 状态。这可以解释为什么它在不同平台上的行为不同(不同的 TIME_WAIT 设置和 TCP 堆栈)。如果你控制的是socket对象,你可以在绑定之前设置SO_REUSEADDR来解决问题。

例如:

sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, server.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1)

您可以在命令提示符下运行netstat -b,为您提供包含状态和拥有进程的打开套接字列表。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      有几种可能性。如果您的任何测试都不能在某个端口上侦听(您没有说什么端口),那么您的 Windows 机器可能正在您之前打开的端口上运行某些东西;此新服务可能在重新安装期间出现。另一方面,如果它只是某些测试的问题,或者它有点零星,那么它可能是一个编程问题(忘记在早期测试中关闭一个套接字,这会干扰后面的测试)或时间问题(在新的尝试打开之前,早期测试的套接字并没有完全关闭)。显然有不同的方法可以解决这些问题,但如果没有更多细节,我认为我们无法提供更多帮助。

      【讨论】:

        【解决方案4】:

        也许你的 Windows 上有一个软件已经使用了 4444 端口,你可以尝试将 Selenium 设置为另一个端口并重试吗?

        【讨论】:

          猜你喜欢
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 2016-09-22
          • 2011-09-16
          • 1970-01-01
          • 2018-01-30
          • 2021-05-21
          • 1970-01-01
          相关资源
          最近更新 更多