报错no such window:如何自动切换至新打开的浏览器窗口?
WebDriver报错:no such window: target window already closed 解决方法
问题场景
登录后关闭弹窗,后续操作触发no such window: target window already closed错误;尝试通过窗口名称切换窗口,但无法获取窗口名称,且原窗口会自动关闭,无法自动切换到新打开的窗口。
用户提供的相关代码:
try: #after first login, popup disapears wait = WebDriverWait(driver, 100) wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="chakra-modal--header-1"]/button/svg/path'))) driver.find_element(by = By.XPATH, value = '//*[@id="chakra-modal--header-1"]/button/svg/path').click() #exit pop-up except: pass #once in page #HERE I GOT THE ERROR wait = WebDriverWait(driver, 100) wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="root"]/div[1]/div[1]/p'))) elem = driver.find_element(by = By.XPATH, value = '//*[@id="root"]/div[1]/div[1]/p') #find balance element
解决方法
1. 跟踪窗口句柄切换,替代窗口名称
WebDriver中每个窗口对应唯一的句柄(handle),无需依赖窗口名称。在登录前记录原窗口句柄,登录后通过句柄切换到新窗口:
# 登录前先记录原窗口句柄 original_handle = driver.current_window_handle # 执行登录操作(此处省略你的登录代码) # 等待新窗口加载,获取所有窗口句柄 wait = WebDriverWait(driver, 10) wait.until(EC.number_of_windows_to_be(2)) # 假设登录后新打开1个窗口,总句柄数为2 all_handles = driver.window_handles # 切换到新窗口 for handle in all_handles: if handle != original_handle: driver.switch_to.window(handle) break
2. 关闭弹窗后确认当前窗口有效性
关闭弹窗后原窗口可能已被销毁,先切换到现存的活跃窗口再执行后续操作:
# 关闭弹窗后,切换到当前存在的最后一个窗口 all_handles = driver.window_handles if len(all_handles) > 0: driver.switch_to.window(all_handles[-1]) # 后续元素定位操作 wait = WebDriverWait(driver, 100) wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="root"]/div[1]/div[1]/p'))) elem = driver.find_element(by=By.XPATH, value='//*[@id="root"]/div[1]/div[1]/p')
3. 优化弹窗关闭的异常捕获逻辑
原代码中except: pass会掩盖所有错误,建议只捕获特定异常(如超时异常),避免隐藏真正的问题:
from selenium.common.exceptions import TimeoutException try: wait = WebDriverWait(driver, 10) # 等待按钮可点击再操作,比visibility更可靠 close_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="chakra-modal--header-1"]/button/svg/path'))) close_btn.click() except TimeoutException: # 弹窗未出现,直接继续 pass
内容的提问来源于stack exchange,提问作者Blackbird Designs
相关产品推荐
相关产品推荐

