上一次提到了浏览器的弹出框处理,浏览器窗口也是会由某种原因触发,使得浏览器打开了一个新的窗口。定位到新的窗口和定位到弹出框差不多,需要先使用切换到该窗口后才能进行操作。
浏览器窗口相关API
名称 | 用法 |
---|---|
switch_to.window(window_handle) | 切换窗口 |
current_window_handle | 当前窗口句柄 |
window_handles | 所有窗口句柄 |
close() | 关闭当前窗口 |
quit() | 关闭浏览器 |
window_handle是浏览器窗口的唯一标识,一般被称为窗口句柄,通过这个句柄才可以自由切换窗口。close()和quit()也一起列出来,重点强调一下关闭窗口和关闭浏览器的区别。
实例
我们直接用百度的网页来举例,通过点击百度首页下方的“京公网安备…号”打开新的窗口,关闭新窗口,然后再回到百度首页中。
我们做两个小测试:
- 打开百度首页,我们先获取当前窗口句柄,打开新窗口后,再获取一次窗口句柄,并把两次获取结果打印出来。
- 关闭新窗口后,浏览器自动切换回了最初的百度首页,这时候对百度首页进行操作
为了防止程序中断,必要的地方使用try/except/finally进行处理。我们来看代码和结果。
# coding = utf-8
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://www.baidu.com')
first_window_handle