我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口
比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面
那我们怎么在这两个窗口之间进行切换呢?每个浏览器窗口都有一个唯一的属性句柄(handle)来表示,我们就可以通过句柄来切换
获取当前窗口句柄:
# coding = utf-8 from selenium import webdriver # 驱动文件路径 driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe' # 启动浏览器 driver = webdriver.Chrome(executable_path=driverfile_path) # 打开百度首页 driver.get(r'https://www.baidu.com/') # 获取当前窗口句柄 main_windows = driver.current_window_handle print(main_windows) # 退出 driver.quit()
获取所有窗口句柄:
# coding = utf-8 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from time import sleep # 驱动文件路径 driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe' # 启动浏览器 driver = webdriver.Chrome(executable_path=driverfile_path) # 打开百度首页 driver.implicitly_wait(10) driver.get(r'https://www.baidu.com/') # 获取当前窗口句柄 main_windows = driver.current_window_handle print(main_windows) # 进入注册 driver.find_element_by_link_text("登录").click() # 这里加一个显示等待,不然有时会报找不到“立即注册这个元素” WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click() # 获取当前所有打开的窗口句柄 all_windows = driver.window_handles print(all_windows) # 退出 sleep(5) driver.quit()
窗口切换
# coding = utf-8 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from time import sleep # 驱动文件路径 driverfile_path = r'D:coshipTest_Frameworkdriverschromedriver.exe' # 启动浏览器 driver = webdriver.Chrome(executable_path=driverfile_path) # 打开百度首页 driver.implicitly_wait(10) driver.get(r'https://www.baidu.com/') # 获取当前窗口句柄 main_windows = driver.current_window_handle print(main_windows) # 进入注册 driver.find_element_by_link_text("登录").click() # 这里加一个显示等待,不然有时会报找不到“立即注册这个元素” WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click() # 获取当前所有打开的窗口句柄 all_windows = driver.window_handles print(all_windows) # 切换进注册页面 for handle in all_windows: if handle != main_windows: driver.switch_to.window(handle) # 获取注册页面窗口句柄 register_windows = driver.current_window_handle print(register_windows) # 切换回百度首页 driver.switch_to.window(main_windows) print(driver.title) # 退出 sleep(5) driver.quit()