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

相關文章
相關標籤/搜索