Python 如何在循环中创建selenium webdriver对象,并在循环结束后关闭窗口?
所以我试图打开列表中的每个链接(由for循环运行),并对该链接执行一些操作 我想为循环中的每个链接打开一个窗口,对其进行操作,关闭它,然后重新开始循环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 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的列表,但尝试了您的代码与我的链接列表,它起了作用。如果您希望我可以与您共享代码,只需测试并检查它是否出现问题