最近我开始在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秒以下时,错误仍然存在。我不知道为什么会发生这种情况。也许我做错了什么。我将非常感谢任何帮助和解释。
1条答案
按热度按时间vu8f3i0k1#
在关闭标签页并切换到父 * Browsing Context * 的过程中涉及到很多过程,这超出了我们肉眼的范围。话虽如此,两者都不是
是切换到新选项卡的理想方式,也不是
是切换到父选项卡的理想方式。
您可以在Open web in new tab Selenium + Python中找到有关选项卡切换的详细讨论
参考文献
几点相关讨论: