Selenium+Python-switch_to.window切换窗口
一、切换窗口
1.使用场景
(1)点击右侧某一个来访用户,会重新打开一个新tab
(2)新开的页面,是来访用户的主页,包含用户名
(3)我们现在做这样一件事,就是判断我们点击的“来访用户”与链接跳转的用户主页是否对应
比如:我们点击的是“羿飞教育管理员”这个来访用户,点击后,会进入管理员的主页
2.思路
(1)先定位到最近来访中的某个用户(列表第一个为例),保存下用户名,点击跳转至用户主页
(2)用switch_to.window()切换窗口,切换到最新主页窗口去定位到这个页面的用户名称
(3)两者一致,说明链接跳转没有问题
二、代码
1.代码
# coding:utf-8
from selenium import webdriver
import time
# 初始设置
driver = webdriver.Chrome()
driver.get("http://192.168.1.9:8080/login.do?gotoURL=http%3A%2F%2F192.168.1.9%3A8080%2Fportal%2Fgeoindex.do")
driver.maximize_window()
time.sleep(1)
# 登录,进入登录的用户主页
driver.find_element_by_id("userAccount").clear()
driver.find_element_by_id("userAccount").send_keys("xxxxx") # 输入登录用户名
driver.find_element_by_id("passwd").clear()
driver.find_element_by_id("passwd").send_keys("xxxx") # 输入登录密码
driver.find_element_by_id("btnlogin").click() # 点击登录按钮
time.sleep(1)
driver.find_element_by_xpath("//div[@class='ubox']/a[1]").click() # 点击主页
time.sleep(1)
# 获取右侧第一个来访用户的用户名
visit_user = driver.find_element_by_xpath("//div[@class='visit bdt1 col-xs-12']/ul/li[1]/span/a").text
print(visit_user)
# 点击用户名,进入来访用户的主页,此时会重新打开一个窗口
driver.find_element_by_xpath("//div[@class='visit bdt1 col-xs-12']/ul/li[1]/a/img").click()
# 获取当前全部窗口句柄集合;循环句柄并判断是否与当前打开的页面一致,不一致就关闭并切换到一致的窗口句柄
handles = driver.window_handles
for handle in handles:
if handle != driver.current_window_handle:
driver.close()
driver.switch_to.window(handle)
# 获取来访用户主页的用户名,判断两者一致测试通过
visit_user_page_name = driver.find_element_by_xpath("//div[@class='personalTitle col-lg-10 col-sm-12 col-xs-11 col-sm-offset-0 col-xs-offset-2']/span").text
print(visit_user_page_name)
if visit_user==visit_user_page_name:
print("用户名相等,测试通过...")
else:
print("测试失败...")
2.结果