多窗口切换
有时候我们在窗口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代表浏览器窗口的倒数第一个

浙公网安备 33010602011771号