【1】疑问
在页面中点击某个链接之后,就会打开一个新的窗口。如何切换到新窗口?若新窗口操作完之后,需要切换到原来的窗口?
【2】步骤
1、获取当前所有的窗口
windows = driver.window_handles
2、切换到制定的窗口
chrome.switch_to.window(windows[-1]) #最新打开的窗口
3、切回原来的窗口
chrome.switch_to.window(windows[0]) #切换到第一个窗口
4、获取当前窗口的句柄
chrome.current_window_handle
【3】示例代码
示例一:百度搜索“selenium”为窗口一,点击“百度一下”按钮,点击带有’培育’的链接,打开第二个窗口。只有获得新窗口的句柄,才能对新窗口进行操作
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://baidu.com")
driver.find_element_by_xpath("//*[@id='kw']").clear() # 清楚输入框的原有文字
print("已清除")
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//*[@id='su']").click()
#获取当前浏览器打开的窗口数
handles =driver.window_handles
print(len(handles))
import time
time.sleep(3)
#定位第一行查找记录,并点击链接
driver.find_element_by_partial_link_text('培育').click()
#等待新的窗口出现
WebDriverWait(driver,30,1).until(EC.new_window_is_opened)
#获取到新的窗口句柄,再切换到新的窗口,才能进行新页面的操作
handles = driver.window_handles
driver.switch_to.window(handles[-1])