- 在点击链接后有时候会在新窗口打开,如果不切换窗口,也无法获取新窗口的东西,即使新窗口打开了, 这时候,我们的
WebDriver
对象对应的 还是老窗口,自动化操作也还是在老窗口进行,所以我们要做的就是窗口切换。
首先导入库和导入驱动
from time import sleep
from selenium import webdriver
# 无头浏览器设置
co = webdriver.ChromeOptions()
co.headless = False
browser = webdriver.Chrome(options=co)
打开网页并点击链接
browser.implicitly_wait(3)
url = 'http://f.python3.vip/webauto/sample3.html'
browser.get(url)
sleep(1)
browser.find_element_by_tag_name('a').click()
变量保存当前窗口的句柄并查找新打开网页的句柄
WebDriver
对象有window_handles
属性,这是一个列表对象, 里面包括了当前浏览器里面所有的窗口句柄。
- 所谓句柄,大家可以想象成对应网页窗口的一个ID
首先保存当前窗口的句柄,以便我们可以在后续切换回来
mainWindows = browser.current_window_handle
然后使用for
循环查找新打开网页的句柄
for handle in browser.window_handles:
browser.switch_to.window(handle)
if 'Bing' in browser.title:
break
我们依次获取 wd.window_handles
里面的所有 句柄 对象, 并且调用 wd.switch_to.window(handle)
方法,切入到每个窗口。
找到目标窗口后,我们使用switch_to.window()
切换到目标窗口
然后可以选择切换到自己的窗口
sleep(1)
browser.switch_to.window(mainWindows)
关闭浏览器结束程序
sleep(2)
browser.quit()
完整demo
"""
窗口切换
"""
from time import sleep
from selenium import webdriver
# 无头浏览器设置
co = webdriver.ChromeOptions()
co.headless = False
browser = webdriver.Chrome(options=co)
browser.implicitly_wait(3)
url = 'http://f.python3.vip/webauto/sample3.html'
browser.get(url)
sleep(1)
browser.find_element_by_tag_name('a').click()
mainWindows = browser.current_window_handle
for handle in browser.window_handles:
browser.switch_to.window(handle)
if 'Bing' in browser.title:
break
sleep(1)
browser.switch_to.window(mainWindows)
sleep(1)
browser.find_element_by_id('outerbutton').click()
sleep(2)
browser.quit()