我试图使用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
的数量之间分配所需的会话数。