Selenium python套接字缓冲区错误10055

时间:2015-07-19 18:16:22

标签: python sockets selenium

您好我有一个selenium python脚本,它检查本地网页的值。

几分钟后我收到套接字10055错误(缓冲区空间或队列已满)。 我猜测我检查页面的次数太多了,它会使这些连接在缓冲区中保持活动状态并最终耗尽端口。

如果我认为只是一个没有关闭连接的问题是正确的,那么如何在不停止代码或使用它的ChromeDriver的情况下关闭连接呢?

此外,我还不完全确定为什么会打开这么多连接导致此错误。我只打开一次页面然后检查它是否有Id和Value,当有值运行脚本时它才会与页面进行交互。 (不与页面交互时会发生此错误)

如果我错了,问题还有什么呢?代码如下。

import os
import sys
import time
import win32com.client
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities    
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://192.168.0.3:3333/")
while True:
    elem = driver.find_element_by_id('keyvalue')
    abc = elem.get_attribute("value")
    if abc != '':
        shell = win32com.client.Dispatch("WScript.Shell")
        shell.Run("notepad++")
        shell.AppActivate("notepad++")
        time.sleep(0.1)
        shell.SendKeys(abc, 0)
        driver.execute_script("document.getElementById('keyvalue').value = ''")

1 个答案:

答案 0 :(得分:1)

我不认为它与使用那么多套接字的网页的连接只有Selenium Webdriver本身。该框架使用了许多临时端口,并使它们处于TIME_WAIT状态。当您在循环中调用find_element_by_id时,这可能是您的问题。至少你应该在time.sleep检查之前移动你的if,以便让TCP端口有机会关闭。您可以在命令行中使用netstat -n表示端口状态。