首页 > 解决方案 > 在 driver.quit 后调用 chromedriver.quit 不起作用?

问题描述

我试图在我的 Python 脚本中退出 Chromedriver 后调用它:

#set driver options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1420,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.binary_location='/usr/bin/google-chrome-stable'
chrome_driver_binary = "/usr/bin/chromedriver"
driver = webdriver.Chrome(executable_path=chrome_driver_binary, chrome_options=chrome_options)


#Set base url 
base_url = 'https://www.example.com&page='


events = []
eventContainerBucket = []

for i in range(1,40):

    #cycle through pages in range
    driver.get(base_url + str(i))
    pageURL = base_url + str(i)

    #do some stuff............

driver.quit()


# Want to re-open Chromedriver here to scrape a new URL

#set driver options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1420,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.binary_location='/usr/bin/google-chrome-stable'
chrome_driver_binary = "/usr/bin/chromedriver"
driver = webdriver.Chrome(executable_path=chrome_driver_binary, chrome_options=chrome_options)


#Set base url 
base_url = 'https://www.example2.com&page='
  
events = []
eventContainerBucket = []

for i in range(1,40):

    #cycle through pages in range
    driver.get(base_url + str(i))
    pageURL = base_url + str(i)

脚本的第一部分运行良好,驱动程序关闭,但在第二次 URL 抓取时无法再次初始化驱动程序(driver.get失败)。它给了我错误:

Traceback (most recent call last):
  File "scraper.py", line 462, in <module>
    driver.get(base_url + str(i))
TypeError: 'WebElement' object is not callable

我怎样才能解决这个问题?

标签: pythonseleniumgoogle-chromeselenium-chromedriver

解决方案


driver.quit()导致driver实例丢失。
为了driver通过命令再次使用 fedriver.get你将不得不重新初始化它

driver = webdriver.Chrome(executable_path=chrome_driver_binary, chrome_options=chrome_options)

请参阅此处以供参考。


推荐阅读