首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当Selenium驱动程序未关闭时,InvalidSessionIdException

当Selenium驱动程序未关闭时,InvalidSessionIdException
EN

Stack Overflow用户
提问于 2022-03-27 09:08:32
回答 1查看 261关注 0票数 0

我有下面的代码片段:

代码语言:javascript
运行
复制
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 60)

for _ in range(10):
    try:
       driver.get(URL)
       wait.until(EC.presence_of_element_located((By.XPATH, ".//*[@class='sr-match-default__status-pre']")))
       driver.close()
        # do something
    except TimeoutException:
        time.sleep(300)
        continue
else:
    driver.close()

这会产生一个selenium.common.exceptions.InvalidSessionIdException,但我不知道为什么。

当我看到错误时,文档会这样说:

如果给定会话id不在活动会话列表中,则发生,这意味着会话要么不存在,要么不处于活动状态。

我的代码不是这样的。在前面的脚本/代码中,我在关闭driver之前成功地定义和使用了它。此外,driver能够在没有任何问题的情况下检索URL。请指点

完整的错误日志如下所示:

代码语言:javascript
运行
复制
  File "/scheduler.py", line 24, in get_new_matches
    driver.get(URL)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 436, in get
    self.execute(Command.GET, {'url': url})
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSessionIdException: Message: invalid session id
Stacktrace:
0   chromedriver                        0x0000000102fe7159 chromedriver + 5120345
1   chromedriver                        0x0000000102f74b13 chromedriver + 4651795
2   chromedriver                        0x0000000102b64d1f chromedriver + 392479
3   chromedriver                        0x0000000102b8ce94 chromedriver + 556692
4   chromedriver                        0x0000000102bb7abc chromedriver + 731836
5   chromedriver                        0x0000000102bb5885 chromedriver + 723077
6   chromedriver                        0x0000000102bb5127 chromedriver + 721191
7   chromedriver                        0x0000000102b3d7da chromedriver + 231386
8   chromedriver                        0x0000000102fa438d chromedriver + 4846477
9   chromedriver                        0x0000000102fbe21c chromedriver + 4952604
10  chromedriver                        0x0000000102fc3a12 chromedriver + 4975122
11  chromedriver                        0x0000000102fbeb4a chromedriver + 4954954
12  chromedriver                        0x0000000102f995b0 chromedriver + 4801968
13  chromedriver                        0x0000000102b3c8ae chromedriver + 227502
14  libdyld.dylib                       0x00007fff6757dcc9 start + 1
15  ???                                 0x0000000000000002 0x0 + 2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-27 10:53:46

您在break中丢失了一条for语句,如果没有它,代码的行为就会因为循环不成功而运行,并执行第二次关闭driverelse块。有关更详细的解释,请参见为什么python在for和while循环之后使用“after”?

break块的末尾添加try语句可以解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71635014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档