web自动化之windows页面切换

一、为什么切换windows页面

  在页面操作过程中,存在点击某个元素之后会重新打开一个windows页面,如果不切换至新页面的话,无法在新页面中进行操作,程序会出现报错

二、如何切换

1.获取当前所有的窗口
windows=driver.window_handles
2.切换到指定窗口
driver.switch_to.window(windows[-1]) 最新打开的窗口
3.切换到原来的窗口
driver.switch_to.window(windows[0]) 切换到第一个窗口
4.获取当前的窗口句柄
driver.current_window_handle

代码实例如下:

窗口切换
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()
输入文本内容柠檬班,并点击百度一下
driver.find_element_by_id('kw').send_keys('柠檬班')
driver.find_element_by_id('su').click()
等待元素出现
locator=(By.XPATH,'//div[@id="3"]//h3[@class="t c-gap-bottom-small"]//em[text()="柠檬班"]')
WebDriverWait(driver,10,0.1).until(EC.visibility_of_element_located(locator))
获取当前的窗口句柄,当前无新窗口打开,窗口句柄只有一个
windows=driver.window_handles

点击柠檬班百度贴吧,会打开新窗口
driver.find_element_by_xpath('//div[@id="3"]//h3[@class="t c-gap-bottom-small"]//em[text()="柠檬班"]').click()
等待新窗口完全打开
WebDriverWait(driver,20).until(EC.new_window_is_opened(windows))

再次获取当前所有窗口句柄,当前打开了新窗口,有两个窗口句柄
windows=driver.window_handles
2切换到最新打开的窗口
driver.switch_to.window(windows[-1])
print(driver.current_window_handle)

等待页面加载完成
locator1 = (By.ID,"j_head_focus_btn")
WebDriverWait(driver,10).until(EC.visibility_of_element_located(locator1))
driver.find_element_by_id("j_head_focus_btn").click()

sleep(2)
driver.close()
driver.quit()

posted @ 2021-07-05 17:23  大头~~  阅读(513)  评论(0编辑  收藏  举报