selenium.common.exceptions.WebDriverException:消息:将Selenium与ChromeDriver和Chrome通过Python结合使用时,无效的会话ID [英] selenium.common.exceptions.WebDriverException: Message: invalid session id using Selenium with ChromeDriver and Chrome through Python

查看:234
本文介绍了selenium.common.exceptions.WebDriverException:消息:将Selenium与ChromeDriver和Chrome通过Python结合使用时,无效的会话ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Selenium编写一些代码,有一次我向不同的网站提出了7个请求.对于第一个,这很好.但是,对于其他人,我得到一个会话ID错误.我认为我的浏览器配置正确,因为我确实从第一个网站获得了结果.我试图将WebDriverWait放在请求之间,但无济于事.我认为这些网站可能阻止了我的请求.有谁知道如何解决这个问题?

I'm writing some code using Selenium, and at one point I make 7 requests, all to different websites. For the first one, this works fine. However, for others, I get a session ID error. I think that my browser is configured correctly, as I do get results from the first website. I have tried to put a WebDriverWait in between the requests, but to no avail. I think the websites might be blocking my requests. Does anyone have any idea how to solve this problem?

对不起,如果这很愚蠢,或者我做错了什么,我很新^^

I'm sorry if this is something stupid or if I'm doing anything wrong, I'm quite new ^^

提前谢谢!

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)

推荐答案

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

invalid session id

The invalid session ID error is a WebDriver error that occurs when the server does not recognize the unique session identifier. This happens if the session has been deleted or if the session ID is invalid.

可以通过以下两种方式之一删除WebDriver会话:

A WebDriver session can be deleted through either of the following ways:

  • Explicit session deletion: A WebDriver session is explicitly deleted when explicitly invoking the quit() method as follows:

  • 代码块:

  • Code Block:

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)

  • 控制台输出:

  • Console Output:

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

  • 隐式会话删除 :当关闭最后一个调用close()方法的窗口或选项卡时,将隐式删除WebDriver会话:

    Implicit session deletion: A WebDriver session is implicitly deleted when you close the last window or tab invoking close() method as follows:

    • 代码块:

    • Code Block:

    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)
    

  • 控制台输出:

  • Console Output:

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

  • 因为第一个请求可以正常工作,但是对于其他请求,您可能会收到会话ID 错误,很可能是检测到 WebDriver 控制的 Web浏览器因此阻止了下一个请求.

    As the first one request works fine but for others you get a session ID error most possibly the WebDriver controled Web Browser is getting detected and hence blocking the next requests.

    WebDriver 控制的 Web浏览器被检测并同时被阻止的原因多种多样.您可以在以下位置找到一些详细的讨论:

    There are different reasons for the WebDriver controled Web Browser to get detected and simultaneously get blocked. You can find a couple of detailed discussion in:

    • How does recaptcha 3 know I'm using selenium/chromedriver?
    • Selenium and non-headless browser keeps asking for Captcha

    这篇关于selenium.common.exceptions.WebDriverException:消息:将Selenium与ChromeDriver和Chrome通过Python结合使用时,无效的会话ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    相关文章
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆