我正在使用 Selenium Python 自动化 saas 应用程序,并且我需要在单击按钮后验证新窗口内容。下面是窗口的截图。
在图像中,我单击“可打印版本”按钮,新窗口的标题为“关于:空白 - Google Chrome”。
我尝试了以下代码,但没有一个起作用,
all_windows = driver.window_handles
driver.switch_to.window(all_windows[1])
我也尝试过这个
driver.switch_to.window(driver.window_handles[1])
我什至尝试循环并找出答案,但没有成功
all_windows = driver.window_handles
for window_handle in all_windows:
if window_handle != driver.current_window_handle:
driver.switch_to.window(window_handle)
break
尝试切换到新打开的窗口时,所有代码都会冻结。 系统超时而不执行任何其他代码。
任何想法都会有帮助
我遇到了同样的问题,就我而言,它有助于在 js 脚本中创建窗口后立即添加行
<your_window>.document.close();
。
在我的例子中,窗口是使用
window.open()
函数创建并打开的,然后使用 document.write()
函数填充内容。不关闭它会导致冻结驱动程序上调用的任何方法,包括简单的 .getTitle()
方法。
也许您可以尝试在测试代码中直接调用此类代码来执行此操作:
((JavascriptExecutor) driver).executeScript("window.document.close();");
但我不能保证这会有帮助。