web自动化 -- 浏览器窗口切换

Posted mua~mua~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web自动化 -- 浏览器窗口切换相关的知识,希望对你有一定的参考价值。

切换浏览器窗口

 

 

 

示例:

from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://www.baidu.com"
search_box = \'//*[@id="kw"]\'
click_search = \'//*[@id="su"]\'

driver = webdriver.Chrome()  # 定义 driver
driver.implicitly_wait(10)  # 设置隐式等待,作用域是全局

try:
    driver.get(url)
    driver.find_element_by_xpath(search_box).send_keys(\'有道云\')  # 输入搜索关键字
    driver.find_element_by_xpath(click_search).click()  # 搜索

    # 窗口切换
    # setup1:获取所有窗口的句柄
    window_handle_list = driver.window_handles
    print(\'最开始的句柄列表:\', window_handle_list)

    # 当前所在的窗口句柄
    now_window = driver.current_window_handle

    # 打开新窗口
    driver.find_element_by_xpath(\'//*[text()="官方"]\').click()
    sleep(0.5)  # 打开新窗口就得 sleep() 一下

    # setup2:等待新窗口打开
    WebDriverWait(driver, 5).until(EC.new_window_is_opened(window_handle_list))

    # setup3:获取新窗口打开后的  所有窗口的句柄
    opened_window_handle_list = driver.window_handles
    print(\'打开新窗口的句柄列表:\', opened_window_handle_list)

    # setup4:让句柄进入新窗口
    driver.switch_to.window(opened_window_handle_list[-1])  # 列表的 -1下标 就是最后一个,最后一个自然是最新打开的窗口

    # # 在新窗口内的其他操作
    driver.find_element_by_xpath(\'//*[@id="form-realname"]\').send_keys(13290021660)
    sleep(1)

    # setup5:切换回其他窗口
    driver.switch_to.window(opened_window_handle_list[0])  # 列表的 0下标 就是最前一个窗口

    sleep(1)
    driver.quit()
except Exception as e:
    driver.quit()
    raise e

 

以上是关于web自动化 -- 浏览器窗口切换的主要内容,如果未能解决你的问题,请参考以下文章

web自动化,如何实现frame表单切换?

web自动化如何实现多窗口切换?

selenium中三大窗口切换

python - web自动化测试 - 元素操作 - 窗口切换

如何在 Selenium for Python 中切换到新窗口?

Web自动化测试11:Selenium之frame切换多窗口切换