Selenium WebDriver-獲取與切換瀏覽器窗口的句柄


通過selenium webdriver去切換瀏覽器的窗口,需要通過句柄,具體代碼如下:

#encoding=utf-8
import unittest
import time
import chardet
from selenium import webdriver
 
class VisitSogouByIE(unittest.TestCase):

    def setUp(self):
        # 啟動chrome瀏覽器
        self.driver = webdriver.Chrome(executable_path = "e:\\chromedriver")

    def test_operateWindowHandle(self):
        url = "http://www.baidu.com"
        self.driver.get(url)
        # 獲取當前窗口句柄
        now_handle = self.driver.current_window_handle
        # 打印當前獲取的窗口句柄
        print now_handle
        # 百度搜索輸入框中輸入“selenium”
        self.driver.find_element_by_id("kw").send_keys("w3cschool")
        # 點擊搜索按鈕
        self.driver.find_element_by_id("su").click()
        # 導入time包
        import time
        # 等待3秒,以便網頁加載完成
        time.sleep(3)
        # 點擊w3school在線教育鏈接
        self.driver.find_element_by_xpath('//div[@id="1"]//a[text()="w3"]').click()
        time.sleep(5)
        # 獲取所有窗口句柄
        all_handles = self.driver.window_handles
        print "++++", self.driver.window_handles[-1]
        # 循環遍歷所有新打開的窗口句柄,也就是說不包括主窗口
        for handle in all_handles:
            if handle != now_handle:
                # 輸出待選擇的窗口句柄
                '''
                切換窗口,也可以用下面的方法,
                但此種方法在selenium3.x以后官方已經不推薦使用了
                self.driver.switch_to_window(handle)  # 老方法
                '''
                # 切換窗口
                self.driver.switch_to.window(handle)  # 新方法
                # 點擊HTML5鏈接
                self.driver.find_element_by_link_text('HTML5').click()
                time.sleep(3)
                # 關閉當前的窗口
                self.driver.close()
        time.sleep(3)
        # 打印主窗口句柄
        print now_handle
        # 返回主窗口
        self.driver.switch_to.window(now_handle)
        time.sleep(2)
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys(u"光榮之路自動化測試培訓")
        self.driver.find_element_by_id("su").click()
        time.sleep(5)


    def tearDown(self):
        # 退出IE瀏覽器
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM