切换浏览器窗口⭐
driver.window_handles获取打开的所有窗口句柄,是一个列表。
所谓句柄(handles),就是窗口的唯一标识,系统通过窗口的句柄来区分不同的窗口。
列表中每个窗口句柄的出现顺序是窗口的启动顺序,所有最后启动的那个窗口的句柄就是列表最后一个成员(索引号是-1)
切换到最新窗口的步骤:
list1=driver.window_handles
driver.switch_to.window(list1[-1])
获得当前窗口句柄
driver.current_window_handle
关闭窗口有两种方法:
driver.quit0→关闭本次运行期间所启动的所有浏览器窗口,退出驱动程序,一般用于程序末尾,测试结束时使用。
driver.close(0→关闭当前一个浏览器窗口,保留其他浏览器窗口,一般用于业务步骤之间,属于一个测试中间的操作步骤。
所有的操作只针对当前窗口:
- 比如close只关闭当前一个窗口,find_element查找元素只在当前窗口里查找。
没有执行窗口切换的代码时,当前窗口就是最初启动的窗口。
当前窗口已经被关闭以后,不会自动切换到其他窗口
- 就算其他窗口只有一个,也不会自动变为当前窗口。
NoSuchWindowException异常原因:
- 当前窗口已经被关闭,或要切换到的目标窗口句柄不正确。
driver.find_element(By.LINK_TEXT,"EC").click()#打开一个新窗口
a=driver.current_window_handle#获取当前窗口句柄
Lst1=driver.window_handles#获取所有窗口句柄
driver.switch_to.window(lst1[-1])#切换到最新窗口
driver.find_element(By.LINK_TEXT,"ECShop ").click()#新窗口
Lst2=driver.window_handles
driver.switch_to.window(lst2[-1])#切换到最新窗口
driver.close()#关闭当前窗口
driver.switch_to.window(a)#切换到最初窗口
切换窗口语法总结:
driver.current_window_handle→获得当前浏览器窗口句柄
driver.windows_handles→获得所有浏览器窗口句柄(List)
driver.switch_to.window(窗口句柄)→切换到特定窗口
driver.close()→关闭当前一个浏览器窗口
driver.quit()→关闭所有浏览器窗口
上次更新: 2025/5/2 14:40:28