购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.8 窗口切换实战

做自动化测试时经常会遇到操作的元素不在当前窗口的场景。针对此种情况,本节进行多窗口切换实战案例演示。

2.8.1 GET方法实战

当单击某个链接或按钮时,当前窗口会跳转到新的窗口。此时,可以使用GET方法获取新窗口的URL,从而实现新窗口页面下的元素定位,如图2.27和图2.28所示。

045-01.jpg

图2.27 窗口1界面

045-02.jpg

图2.28 窗口2界面

示例如下:

from selenium import webdrvier
from time import sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_id("kw").send_keys("渗透吧")
driver.find_element_by_id("su").click()
# 第一个窗口下单击“渗透吧”链接
driver.find_element_xpath('//*[@id="1"]/h3/a').click()
# 使用get()方法获取跳转后的URL地址
driver.get('http://tieba.baidu.com/f?kw=%C9%F8%CD%B8&fr=ala0&tpl=5')
sleep(3)
# 操作跳转后所在窗口的页面元素
driver.find_element_by_link_text('进入贴吧').click()

2.8.2 SWITCH方法实战

本案例中使用window_handles获取所有窗口,并返回一个list对象;然后通过switch_to.window(window[index])方法来切换指定窗口,如window(1)表示切换到第二个窗口。

示例如下: icwRVgNZkjuS/EfFwj4VP4B+rKVKHr8Jiwub0lryjni/FmZ+Ztl0I/593nPyshg2

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
dr = webdriver.Chrome()
url = "https://www.so.com/"
dr.get(url)
sleep(1)
dr.find_element_by_link_text("360导航").click()
sleep(2)
# 获取所有窗口的句柄
windows = dr.window_handles
# 通过索引切换到第二个窗口
dr.switch_to.window(windows[1])
sleep(0.5)
# 在第二个窗口的文本框中输入“第二个窗口”
dr.find_element_by_id("search-kw").send_keys("第二个窗口")
sleep(2)
# 切换到第一个窗口
dr.switch_to.window(windows[0])
# 在第一个窗口的文本框中输入“第一个窗口”
dr.find_element_by_id("input").send_keys("第一个窗口")
点击中间区域
呼出菜单
上一章
目录
下一章
×