2011-05-30 22 views
2

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

有没有人有如何处理这个问题的想法?

当前配置/库:

蟒2.7,numpy的,selenium.py

+0

它使用哪个端口的限制吗? – wong2 2011-05-30 12:50:18

+0

默认情况下,硒在端口4444上运行 – 2011-05-30 13:13:56

回答

0

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

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给你开放套接字与国家和拥有的进程列表。

0

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