selenium.common.exceptions.WebDriverException:消息:通过Python将selenium与ChromeDriver和Chrome一起使用时会话id无效
我正在使用Selenium编写一些代码,有一次我提出了7个请求,所有请求都指向不同的网站。对于第一个,这很好。但是,对于其他人,我得到一个会话ID错误。我认为我的浏览器配置正确,因为我确实从第一个网站获得了结果。我试着在两个请求之间放置一个WebDriverWait,但没有效果。我想这些网站可能会阻止我的请求。有人知道如何解决这个问题吗 如果这是件愚蠢的事,或者如果我做错了什么,我很抱歉,我是新来的^^ 提前谢谢selenium.common.exceptions.WebDriverException:消息:通过Python将selenium与ChromeDriver和Chrome一起使用时会话id无效,python,selenium,google-chrome,webdriver,selenium-chromedriver,Python,Selenium,Google Chrome,Webdriver,Selenium Chromedriver,我正在使用Selenium编写一些代码,有一次我提出了7个请求,所有请求都指向不同的网站。对于第一个,这很好。但是,对于其他人,我得到一个会话ID错误。我认为我的浏览器配置正确,因为我确实从第一个网站获得了结果。我试着在两个请求之间放置一个WebDriverWait,但没有效果。我想这些网站可能会阻止我的请求。有人知道如何解决这个问题吗 如果这是件愚蠢的事,或者如果我做错了什么,我很抱歉,我是新来的^^ 提前谢谢 Traceback (most recent call last): File
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)
回溯(最近一次呼叫最后一次):
文件“/home/cena/PycharmProjects/Frikandelbroodje/main.py”,第56行,在
dirk_price=get_price(dirk_url,dirk_类名)
文件“/home/cena/PycharmProjects/Frikandelbroodje/main.py”,第44行,在get_price中
browser.get(url)
get中的文件“/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第333行
self.execute(Command.GET,{'url':url})
文件“/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/webdriver.py”,执行中第321行
self.error\u handler.check\u响应(响应)
文件“/usr/local/lib/python3.7/dist packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:会话id无效
(驱动程序信息:chromedriver=74.0.3729.6(255758ECCF3D24491B8A1317AA76E1CE10D57E9参考/分支头/3729{29}),平台=Linux 4.15.0-50-generic x86_64)
无效会话ID错误是服务器无法识别唯一会话标识符时发生的错误。如果会话已被删除或会话ID无效,则会发生这种情况
可以通过以下任一方式删除WebDriver会话:
- :显式调用
方法时,会显式删除WebDriver会话,如下所示:quit()
- 代码块:
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)
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
Current session is a9272550-c4e5-450f-883d-553d337eed48 No active session with ID a9272550-c4e5-450f-883d-553d337eed48
- 代码块:
- :关闭调用
方法的最后一个窗口或选项卡时,WebDriver会话将被隐式删除,如下所示:close()
- 代码块:
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)
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
Current session is a9272550-c4e5-450f-883d-553d337eed48 No active session with ID a9272550-c4e5-450f-883d-553d337eed48
- 代码块:
结论 由于第一个请求工作正常,但对于其他请求,您会收到会话ID错误,很可能是WebDriver控制的Web浏览器被检测到,从而阻止了下一个请求 WebDriver控制的Web浏览器被检测到并同时被阻止有不同的原因。您可以在以下内容中找到一些详细的讨论: