一、前言
1.点击某些链接,会重新打开一个小窗口,对于这种情况,想要在新页面上操作,就得先切换窗口了。
2.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,就可以在多个页面灵活操作了。
二、多窗口处理流程
1.先获取到当前的窗口句柄,self.driver.current_window_handle
2.再获取到所有的窗口句柄,self.driver.window_handles
3.判断是否是想要操作的敞口,如果是,就可以对窗口进行操作,如果不是,跳转到另一个窗口,对另一个窗口进行操作,self.dirver.switch_to.window
三、演示
1.打开百度
2.点击右上角登录
3.点击立即注册
4.切换窗口,输入账号密码
5.切换回来,点击登录
6.输入账号密码,点击登录
完整代码如下:
# -*- coding:utf-8 -*-
# @File:test_window.py
import time
from selenium_test.baseimport Base
class TestWindows(Base):
def test_window(self):
self.driver.get("https://www.baidu.com/")
self.driver.find_element_by_link_text('登录').click()
print(self.driver.current_window_handle)
# 点击立即注册
self.driver.find_element_by_xpath('//*[@id="passport-login-pop-dialog"]/div/div/div/div[3]/a').click()
print(self.driver.current_window_handle)
print(self.driver.window_handles)
windows =self.driver.window_handles
self.driver.switch_to.window(windows[-1])
self.driver.find_element_by_id('TANGRAM__PSP_4__userName').send_keys('username')
self.driver.find_element_by_id('TANGRAM__PSP_4__phone').send_keys('13000000000')
self.driver.switch_to.window(windows[0])
self.driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn').click()
self.driver.find_element_by_id('TANGRAM__PSP_11__userName').send_keys('login_username')
self.driver.find_element_by_id('TANGRAM__PSP_11__password').send_keys('login_password')
self.driver.find_element_by_id('TANGRAM__PSP_11__submit').click()
time.sleep(3)
网友评论