Python 如何在循环中创建selenium webdriver对象,并在循环结束后关闭窗口?

Python 如何在循环中创建selenium webdriver对象,并在循环结束后关闭窗口?,python,python-3.x,selenium,selenium-webdriver,sleep,Python,Python 3.x,Selenium,Selenium Webdriver,Sleep,所以我试图打开列表中的每个链接(由for循环运行),并对该链接执行一些操作 我想为循环中的每个链接打开一个窗口,对其进行操作,关闭它,然后重新开始循环 for link in links_list: driver = webdriver.Chrome('D:/location-of-driver.exe') driver.implicitly_wait(5) driver.get(link) a_variable = driver.find_element_b

所以我试图打开列表中的每个链接(由for循环运行),并对该链接执行一些操作

我想为循环中的每个链接打开一个窗口,对其进行操作,关闭它,然后重新开始循环

for link in links_list:
    driver = webdriver.Chrome('D:/location-of-driver.exe')
    driver.implicitly_wait(5)

    driver.get(link)

    a_variable = driver.find_element_by_css_selector('selector')

    time.sleep(3)  # required for my usage

    driver.close()  # this I believe should close the window
因此循环迭代1次,当它再次到达顶部时崩溃。driver.close()适用于第一次迭代

我希望当前链接的窗口打开3秒钟,循环重新开始

错误:

Traceback (most recent call last):
  File "./play.py", line 18, in <module>
    driver.get(link)
selenium.common.exceptions.WebDriverException: Message: invalid session id
(Driver info: chromedriver=2.45.615291 
(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 
x86_64)
回溯(最近一次呼叫最后一次):
文件“/play.py”,第18行,在
驱动程序。获取(链接)
selenium.common.exceptions.WebDriverException:消息:会话id无效
(驾驶员信息:chromedriver=2.45.615291
(ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),平台=Windows NT 10.0.17134
x86_64)
提前谢谢

driver.quit()
这用于退出驱动程序并关闭每个相关窗口

driver.close()
这用于关闭当前窗口

您的错误源于在驱动程序已退出时尝试关闭窗口

解决方案


仅使用
close
方法,您不必在此场景中使用
quit

@Gaurav如前所述,请尝试此方法。如果您遇到类似问题,我相信您已将chrome驱动程序更新为最新版本

links_list = ["https://www.google.com/", "https://www.w3schools.com/","https://www.toolsqa.com/"]

for link in links_list:
    driver = webdriver.Chrome('D:/Java/TestChrome/lib/chromedriver.exe')
    driver.implicitly_wait(5)
    print(link)
    driver.get(link)

   # a_variable = driver.find_element_by_css_selector('selector')

    time.sleep(3)  # required for my usage

    #driver.quit()  # this I believe should close the window
    driver.close()

print('pass')

谢谢发布这个问题后,我立刻意识到我的错误,哈哈。我已经用我仍然面临的错误更新了这个问题。呵呵。好吧正在尝试查看新代码的错误。@GauravK是否有任何特定的原因需要关闭窗口?您可以在同一窗口中加载新链接。我这样问是因为在加载每个链接之前,您必须等待每个循环结束。因此,我正在打开一个SoundCloud页面,SoundCloud会在打开新窗口时自动播放音频。我没有尝试关闭窗口,代码工作时不需要驱动程序。close()这是一个更合适的答案。我在循环中运行driver.get(newPage)和driver.quit(),第一次迭代后它就崩溃了。应该是driver.close()。它现在就像一个符咒。代码看起来很好。我已经测试过了。你可以做一件事来更新selenium。pip安装-U seleniumI在3.141.0本身上:(好的,如果可能的话,你能分享你的链接列表吗?当我们删除驱动程序时,我试图不完全关闭窗口,代码正常。close()链接列表只是SoundCloud歌曲URLSB的列表,但尝试了您的代码与我的链接列表,它起了作用。如果您希望我可以与您共享代码,只需测试并检查它是否出现问题