您好我有一个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 = ''")
答案 0 :(得分:1)
我不认为它与使用那么多套接字的网页的连接只有Selenium Webdriver本身。该框架使用了许多临时端口,并使它们处于TIME_WAIT
状态。当您在循环中调用find_element_by_id
时,这可能是您的问题。至少你应该在time.sleep
检查之前移动你的if
,以便让TCP端口有机会关闭。您可以在命令行中使用netstat -n
表示端口状态。