webdriver高級應用- 瀏覽器中新開標簽頁(Tab)


#encoding=utf-8
import unittest
from selenium import webdriver
import time
import win32api, win32con

VK_CODE ={'ctrl':0x11, 't':0x54, 'tab':0x09}

# 鍵盤鍵按下
def keyDown(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)
# 鍵盤鍵抬起
def keyUp(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

# 封裝的按鍵方法
def simulateKey(firstKey, secondKey):
    keyDown(firstKey)
    keyDown(secondKey)
    keyUp(secondKey)
    keyUp(firstKey)

class TestDemo(unittest.TestCase):
    def setUp(self):
        # 獲取瀏覽器驅動實例
        self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
        #self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
    def test_newTab(self):
        # 等待3秒,等待瀏覽器啟動完成
        time.sleep(3)
        # 使用for循環,再新開兩個新的標簽頁
        for i in range(2):
            simulateKey("ctrl", "t")
        # 通過Ctrl + tab組合鍵,將當前頁面切換為默認頁面,
        # 也就是最先打開的標簽頁
        simulateKey("ctrl", "tab")
        # 訪問搜狗首頁
        self.driver.get("http://sogou.com")
        self.driver.find_element_by_id("query").send_keys(u"光榮之路")
        self.driver.find_element_by_id("stb").click()
        time.sleep(3)
        #self.assertTrue(u"喬什•盧卡斯" in self.driver.page_source)

        # 獲取所有的打開的窗口句柄
        all_handles = self.driver.window_handles
        print len(all_handles)
        for handle in all_handles:
            # 將當前窗口句柄切換至第二個標簽頁
            self.driver.switch_to.window(handle)
            print self.driver.title
            if u"輸入法" not in self.driver.page_source:
                self.driver.get("http://www.baidu.com")
                self.driver.find_element_by_id("kw").send_keys(u"WebDriver實戰寶典")
                self.driver.find_element_by_id("su").click()
                time.sleep(3)
                self.assertTrue(u"實戰寶典" in self.driver.page_source)
            elif (u"輸入法" not in self.driver.page_source) and ("WebDriver" not in self.driver.page_source):
            # 將當前窗口的句柄切換至第三個標簽頁
                self.driver.get("http://www.iciba.com")
                time.sleep(3)
                self.assertTrue(u"查詞" in self.driver.page_source)

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

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

 

基於火狐:

#encoding=utf-8
import unittest
from selenium import webdriver
import time
import win32api, win32con

VK_CODE ={'ctrl':0x11, 't':0x54, 'tab':0x09}

# 鍵盤鍵按下
def keyDown(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)
# 鍵盤鍵抬起
def keyUp(keyName):
    win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

# 封裝的按鍵方法
def simulateKey(firstKey, secondKey):
    keyDown(firstKey)
    keyDown(secondKey)
    keyUp(secondKey)
    keyUp(firstKey)

class TestDemo(unittest.TestCase):
    def setUp(self):
        # 獲取瀏覽器驅動實例
        #self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
        self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
    def test_newTab(self):
        # 等待3秒,等待瀏覽器啟動完成
        time.sleep(3)
        # 使用for循環,再新開兩個新的標簽頁
        for i in range(2):
            simulateKey("ctrl", "t")
        # 通過Ctrl + tab組合鍵,將當前頁面切換為默認頁面,
        # 也就是最先打開的標簽頁
        simulateKey("ctrl", "tab")
        # 訪問搜狗首頁
        self.driver.get("http://sogou.com")
        self.driver.find_element_by_id("query").send_keys(u"光榮之路")
        self.driver.find_element_by_id("stb").click()
        time.sleep(3)
        #self.assertTrue(u"喬什•盧卡斯" in self.driver.page_source)

        # 獲取所有的打開的窗口句柄
        all_handles = self.driver.window_handles
        print len(all_handles)
        # 將當前窗口句柄切換至第二個標簽頁
        self.driver.switch_to.window(all_handles[1])
        self.driver.get("http://www.baidu.com")
        self.driver.find_element_by_id("kw").send_keys(u"WebDriver實戰寶典")
        self.driver.find_element_by_id("su").click()
        time.sleep(3)
        self.assertTrue(u"吳曉華" in self.driver.page_source)

        # 將當前窗口的句柄切換至第三個標簽頁
        self.driver.switch_to.window(all_handles[2])
        self.driver.get("http://www.baidu.com")
        self.driver.find_element_by_id("kw").send_keys("selenium")
        self.driver.find_element_by_id("su").click()
        time.sleep(3)
        self.assertTrue("www.seleniumhq.org" in self.driver.page_source)

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

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

 


免責聲明!

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



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