Selenium+Python-switch_to.window切换窗口

一、切换窗口

1.使用场景

(1)点击右侧某一个来访用户,会重新打开一个新tab

Selenium+Python-switch_to.window切换窗口

 

(2)新开的页面,是来访用户的主页,包含用户名

Selenium+Python-switch_to.window切换窗口

(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.结果

Selenium+Python-switch_to.window切换窗口