selenium.common.exceptions.WebDriverException:消息:通过Python使用selenium和ChromeDriver以及Chrome的会话id无效

2024-09-26 18:00:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Selenium编写一些代码,有一次我向不同的网站发出了7个请求。对于第一个,这个很好。但是,对于其他人,我得到一个会话ID错误。我认为我的浏览器配置正确,因为我确实从第一个网站得到了结果。我试图在请求之间添加一个WebDriverWait,但没有成功。我想网站可能会阻止我的请求。有人知道怎么解决这个问题吗?

很抱歉,如果这是一件愚蠢的事情,或者如果我做错了什么,我是全新的

提前谢谢!

Traceback (most recent call last):
  File "/home/cena/PycharmProjects/Frikandelbroodje/main.py", line 56, in <module>
    dirk_price = get_price(dirk_url, dirk_classname)
  File "/home/cena/PycharmProjects/Frikandelbroodje/main.py", line 44, in get_price
    browser.get(url)
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: invalid session id
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.15.0-50-generic x86_64)

Tags: inpyurlget网站libusrlocal
1条回答
网友
1楼 · 发布于 2024-09-26 18:00:03

invalid session id

无效会话ID错误是当服务器无法识别唯一会话标识符时发生的WebDriver error。如果会话已被删除会话ID无效,则会发生这种情况。

可以通过以下任一方式删除WebDriver会话:

  • Explicit session deletion:当显式调用quit()方法时,将显式删除WebDriver会话,如下所示:

    • 代码块:

      from selenium import webdriver
      from selenium.common.exceptions import InvalidSessionIdException
      
      driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
      print("Current session is {}".format(driver.session_id))
      driver.quit()
      try:
          driver.get("https://www.google.com/")
      except Exception as e:
          print(e.message)
      
    • 控制台输出:

      Current session is a9272550-c4e5-450f-883d-553d337eed48
      No active session with ID a9272550-c4e5-450f-883d-553d337eed48
      
  • Implicit session deletion:当您关闭调用close()方法的最后一个窗口或选项卡时,将隐式删除WebDriver会话,如下所示:

    • 代码块:

      driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
      print("Current session is {}".format(driver.session_id))
      # closes current window/tab
      driver.close()
      try:
          driver.get("https://www.google.com/")
      except Exception as e:
          print(e.message)
      
    • 控制台输出:

      Current session is a9272550-c4e5-450f-883d-553d337eed48
      No active session with ID a9272550-c4e5-450f-883d-553d337eed48
      

结论

由于第一个请求工作正常,但对于其他请求,您会得到一个会话ID错误,最有可能是检测到WebDriver控制的Web Browser并因此阻塞下一个请求。

WebDriver控制Web浏览器被检测到并同时被阻止的原因是不同的。您可以在中找到一些详细的讨论:

相关问题 更多 >

    热门问题