多窗口切换

有时候我们在窗口A点击一个链接跳转到新窗口B,这时候可以用webdriver提供的相关方法来在多个窗口之间切换并操作不同窗口的元素。要想在多个窗口之间切换,首先要获得每一个窗口唯一的标识符号(也就是句柄),通过获得的句柄来区分不同的窗口,从而对不同窗口的元素进行操作。

 

代码:

from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By


def test_baidu():

    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    driver.maximize_window()
    driver.implicitly_wait(5)
    driver.find_element(By.LINK_TEXT, '登录').click()
    # 获取当前句柄
    current_window = driver.current_window_handle
    driver.find_element(By.LINK_TEXT, '立即注册').click()

    # 获取所有窗口句柄
    windows = driver.window_handles
    # 切换到最后一个窗口句柄
    driver.switch_to.window(windows[-1])
    # 输入用户名和密码.注册账户
    driver.find_element(By.ID, 'TANGRAM__PSP_4__userName').send_keys('username')
    driver.find_element(By.ID, 'TANGRAM__PSP_4__phone').send_keys('15092078614')
    driver.find_element(By.ID, 'TANGRAM__PSP_4__submit')
    sleep(3)

    # 切换到之前的窗口登录账户
    driver.switch_to.window(current_window)
    sleep(3)
    driver.find_element(By.ID,'TANGRAM__PSP_11__userName').send_keys('username')
    driver.find_element(By.ID, 'TANGRAM__PSP_11__password').send_keys('password')
    driver.find_element(By.ID, 'TANGRAM__PSP_11__submit').click()
    sleep(3)

获取当前窗口句柄: driver.current_window_handle
获取所有句柄窗口: driver.window_handles

windows[-1]: 这里边的-1代表浏览器窗口的倒数第一个

 

posted @ 2021-12-06 16:44  ElsaWang  阅读(261)  评论(0)    收藏  举报