窗口切换(加显示等待)

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,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

在尝试切换到它之前等待窗口打开

webdriver中的三大等待及窗口的切换

win7系统下如何快速切换程序窗口的方法

Python3-Selenium自动化测试框架之窗口切换等待

在Android Studio片段之间切换时地图片段不隐藏