窗口切换(加显示等待)
作者:互联网
由于新窗口的打开可能需要一定时间,为了确保成功切换到新窗口(的句柄),在切换窗口句柄前,先设置显式等待
注:这里设置的显式等待如:WebDriverWait(driver,5,0.5).until(EC.new_window_is_opened(start_window)),其中传入的参数start_window指的是打开新窗口前的所有窗口句柄,
其原理就是通过打开新窗口前后窗口句柄有无增加来判定新窗口是否已经打开
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver.implicitly_wait(30) driver.find_element(By.ID, 'kw').send_keys('12306') # 百度搜索框输入12306 driver.find_element(By.ID, 'su').click() # 点击百度一下 # 在点击打开新窗口之前获取所有窗口句柄 start_window = driver.window_handles # 点击12306 driver.find_element(By.XPATH, "//h3[@class='t c-gap-bottom-small']//em[text()='12306']").click() # 等待新窗口打开(传参start_window) WebDriverWait(driver, 5, 0.5).until( EC.new_window_is_opened(start_window) ) # 切换窗口 driver.switch_to.window(driver.window_handles[-1]) # 定位12306窗口中的元素并点击 driver.find_element(by=By.XPATH, value="//a[@id='my12306']").click() time.sleep(5) driver.quit()
标签:窗口,句柄,driver,window,12306,切换,import,等待,新窗口 来源: https://www.cnblogs.com/2orange/p/15769808.html