#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()