我试图使用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
)尝试在可用的CPU
,Memory
,Network
或Cache
内容纳。因此,无论何时,所提到的参数的使用超出阈值水平,下一个新的chromedriver.exe
或chrome.exe
将无法正确生成。在你的情况下,chromedriver.exe
无法产卵。因此,您会看到错误:
chromedriver.exe is not responding
如果您需要一次产生36个会话,则需要使用:
Selenium in Grid Configuration
:Selenium Grid
由Hub
和Node
组成,你可以在Nodes
的数量中分发所需数量的会话。