问题:python / selenium中的套接字错误[地址已在使用中]

时间:2011-05-30 12:44:14

标签: python selenium-rc socketexception

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

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

当前配置/库:

python 2.7,numpy,selenium.py

4 个答案:

答案 0 :(得分:1)

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

例如:

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

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

答案 1 :(得分:1)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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