Python selenium :使用driver. close()关闭新选项卡可能会导致"no such window:目标窗口已关闭;Web视图未找到"错误

gblwokeq  于 2023-02-08  发布在  Python
关注(0)|答案(1)|浏览(485)

最近我开始在Selenium中使用多个选项卡,遇到了一个奇怪的问题。当我执行以下代码时:

WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
driver.switch_to.window(driver.window_handles[-1])
time.sleep(1)
url_in_page_source= eu.look_for_url_in_page_source(
    page_html=driver.page_source,
    left_delimiter='placeholder',
    right_delimiter='placeholder'
)
driver.close()
driver.switch_to.window(driver.window_handles[0])
# time.sleep(10) # <--- this is fixing the error
return url_in_page_source

并且在return语句之后,当我尝试访问driver.get()提取的URL时,我得到了这个错误:

Message: no such window: target window already closed
from unknown error: web view not found

然而我发现在return语句之前添加一个简单的time.sleep(10)可以解决这个问题,但是更奇怪的是-当我尝试将等待时间降低到10秒以下时,错误仍然存在。我不知道为什么会发生这种情况。也许我做错了什么。我将非常感谢任何帮助和解释。

vu8f3i0k

vu8f3i0k1#

在关闭标签页并切换到父 * Browsing Context * 的过程中涉及到很多过程,这超出了我们肉眼的范围。话虽如此,两者都不是

driver.switch_to.window(driver.window_handles[-1])

是切换到新选项卡的理想方式,也不是

driver.switch_to.window(driver.window_handles[0])

是切换到父选项卡的理想方式。
您可以在Open web in new tab Selenium + Python中找到有关选项卡切换的详细讨论

参考文献

几点相关讨论:

相关问题