Selenium 2自动化测试实战16(多窗口切换)

1、多窗口切换python

在页面操做过程当中有时候点击某个连接会弹出新的窗口,这时就须要主机切换到新打开的窗口上进行操做。WebDriver提供了switch_to.window()方法。能够实如今不一样的窗口之间切换。
以百度和百度注册页为例,在两个窗口之间切换web

#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")

#得到百度搜索窗口句柄
search_windows=driver.current_window_handle

driver.find_element_by_link_text(u"登陆").click()
driver.find_element_by_link_text(u"当即注册").click()

#得到当前全部打开的窗口的句柄
all_handles=driver.window_handles

#进入注册窗口
for handle in all_handles:
    if handle != search_windows:
        driver.switch_to_window(handle)
        print 'now register window!'
        driver.find_element_by_name("userName").send_keys('username')
        time.sleep(2)

#回到搜索窗口
for handle in all_handles:
    if handle==search_windows:
        driver.switch_to_window(handle)
        print 'now search window!'
        driver.find_element_by_id('TANGRAM__PSP_4__closeBtn').click()
        driver.find_element_by_id('kw').send_keys('selenium')
        driver.find_element_by_id('kw').send_keys(Keys.ENTER)
        time.sleep(2)

driver.quit()

 

脚本执行的过程:打开百度首页,经过current_window_handle得到当前窗口的句柄,并赋值给变量search_handle。接着打开登陆弹窗,在登陆弹窗上单击“当即注册”,从而打开新的注册窗口。经过window_handles得到当前打开的全部窗口的句柄,并赋值给变量all_handles
第一个循环遍历all_handles,若是handles不等于search_handle,那么必定是注册窗口,由于脚本执行过程当中只打开了两个窗口。因此,经过switch_to.window()切换到注册页进行注册操做。第二个循环相似,不过这一次判断若是handle等于search_handle,那么切换到百度搜索页面,而后进行搜索操做。
本例中涉及的新方法:
(1)current_window_handle:得到当前窗口句柄
(2)window_handles:返回全部窗口的句柄到当前会话
(3)switch_to.window():用于切换到相应的窗口,与switch_to.frame()相似,前者用于不一样窗口的切换,后者用于不一样表单之间的切换。windows

相关文章
相关标签/搜索