我试图使用Selenium来一次访问一个只有几十个会话的网站,但是每当我尝试设置9个以上的会话时,它都会显示“ chromedriver.exe没有响应”,并且会话开始自行关闭。

这是我的代码:

from selenium import webdriver
import time

url = "website URL"
amount = 36

def generateBrowsers():
    for x in range(0, amount):
        driver = webdriver.Chrome(executable_path="C:/Users/user/Documents/chromedriver_win32/chromedriver.exe")
        driver.get(url)
        time.sleep(3)

generateBrowsers()


有谁知道可能是错的吗?

最佳答案

从逻辑上讲,您的代码块没有错误。

但是,当您尝试一次打开36个会话时,您需要考虑以下事实:


每次调用driver = webdriver.Chrome(executable_path="C:/Users/user/Documents/chromedriver_win32/chromedriver.exe")都会启动:

1. A new WebDriver instance
2. A new Web Browser instance

每个WebDriver实例和Web Browser实例都需要占用一定数量的:

1. CPU
2. Memory
3. Network
4. Cache



现在,当您从还运行许多其他Test Suite的系统上执行Applications时(其中一些可能在Start Up上)尝试适应可用的CPUMemoryNetworkCache。因此,只要提到的参数的使用超出阈值级别,下一个新的chromedriver.exechrome.exe都将无法正确产生。在您的情况下,chromedriver.exe无法生成。因此,您看到错误:

chromedriver.exe is not responding




如果您需要一次产生36个会话,则需要使用:


Selenium in Grid ConfigurationSelenium GridHubNode组成,您将能够在Nodes的数量之间分配所需的会话数。

08-27 18:15
查看更多