窗口切换(加显示等待)
Posted 2orange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了窗口切换(加显示等待)相关的知识,希望对你有一定的参考价值。
由于新窗口的打开可能需要一定时间,为了确保成功切换到新窗口(的句柄),在切换窗口句柄前,先设置显式等待
注:这里设置的显式等待如: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()
以上是关于窗口切换(加显示等待)的主要内容,如果未能解决你的问题,请参考以下文章
selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等