python+selenium切换窗口,两个窗口却只有一个句柄,问题在这里
问题:
两个窗口,使用一下代码打印所有窗口句柄,发现只打印出了一个句柄。
print(driver.current_window_handle) # 输出当前窗口句柄
handles = driver.window_handles # 获取当前全部窗口句柄集合
print(handles) # 输出句柄集合
解决办法
这是因为我再浏览器一打开第二个标签页的代码后面直接写了打印当前或所有窗口的句柄,这市第二个窗口还没有打开,因为代码的运行速度是很快的,这时windows还没有生成句柄。
我们在切换句柄前,加上sleep延时,等待新页面打开。
time.sleep(10)
print(driver.title)
print(driver.current_window_handle) # 输出当前窗口句柄
handles = driver.window_handles # 获取当前全部窗口句柄集合
print(handles) # 输出句柄集合
driver.switch_to.window(handles[-1])
再次运行,窗口切换成功。