webdriver仍是頗有意思的,以前用過Ruby的watir的自動化測試框架,感受selenium的這套框架更好一些,很容易就能夠上手。我雖然不作自動化這塊,不過先玩玩再說,多學點東西總之仍是好一些的。html
1 # coding:utf-8 2 import time 3 from selenium import webdriver 4 import unittest 5 from pythontest.commlib.baselib import * 6 7 8 #引用封裝後的日誌系統 9 log = TestLog().getlog() 10 class BaiBu(unittest.TestCase): 11 u'''【百度.類】''' 12 def setUp(self): 13 self.browser = webdriver.Firefox() 14 self.browser.get("http://www.baidu.com") 15 self.browser.implicitly_wait(10) 16 #self.base = Screen(self.browser) 17 18 def tearDown(self): 19 self.browser.quit() 20 21 def test_search(self): 22 log.info("搜索前title:" + self.browser.title.encode("utf-8") ) #獲得的title中文編碼格式,非UTF-8格式,須要轉碼 23 #輸入關鍵字,關鍵字任意 24 self.browser.find_element_by_class_name("s_ipt").send_keys(u"北京尚拓雲測 軟件測試外包公司") 25 self.browser.find_element_by_class_name("s_btn").submit() #此處class屬性有三個值,中間使用空格隔開,取其中一值 26 #點擊搜索結果 27 self.browser.find_element_by_xpath(".//*[@id='2']/h3/a").click() #根據xpath識別元素 28 time.sleep(3) 29 log.info("結果頁:" + self.browser.title.encode("utf-8") ) #轉碼utf-8 30 self.assertIn("軟件測試",self.browser.title.encode("utf-8")) #斷言,轉碼 31 time.sleep(5) 32 '''接下來的工做,是獲取新頁面的handler,以及循環點擊搜索結果''' 33 34 if __name__ == "__main__": 35 unittest.main()
明天有時間再優化,根據id進行隨機數選取。能夠參考我以前Ruby的一個自動化測試框架:http://www.cnblogs.com/zhuque/archive/2012/11/30/2796866.htmlpython
優化: 一、導入random模塊,隨機打開頁面搜索結果;web
二、獲取新打開頁面的頁面句柄,並創建新結果頁的斷言框架
三、創建while循環,每次打開新頁面前,從新獲取原來結果頁面的句柄dom
1 # coding:utf-8 2 import time 3 from selenium import webdriver 4 import unittest 5 from pythontest.commlib.baselib import * 6 import random 7 8 9 #引用封裝後的日誌系統 10 log = TestLog().getlog() 11 class BaiBu(unittest.TestCase): 12 u'''【百度.類】''' 13 def setUp(self): 14 self.browser = webdriver.Firefox() 15 self.browser.get("http://www.baidu.com") 16 self.browser.implicitly_wait(10) 17 #self.base = Screen(self.browser) 18 19 def tearDown(self): 20 # self.browser.quit() 21 pass 22 23 def test_search(self): 24 u'''接下來的工做,是獲取新頁面的handler,以及循環點擊搜索結果''' 25 log.info("搜索前title:" + self.browser.title.encode("utf-8") ) #獲得的title中文編碼格式,非UTF-8格式,須要轉碼 26 #輸入關鍵字,關鍵字任意 27 self.browser.find_element_by_class_name("s_ipt").send_keys(u"北京尚拓雲測 軟件測試外包公司") 28 self.browser.find_element_by_class_name("s_btn").submit() #此處class屬性有三個值,中間使用空格隔開,取其中一值 29 i = 0 30 while i < 2: #打開兩次搜索結果 31 randid = random.randint(1,5) #根據搜索結果頁id屬性,隨機打開搜索結果 32 #點擊搜索結果 33 self.browser.switch_to.window(self.browser.window_handles[0]) #獲取搜索結果頁的頁面句柄 34 print( ".//*[@id='%s']/h3/a"%(randid) ) #對print()進行格式化輸出,%(randid) 35 self.browser.find_element_by_xpath( ".//*[@id='%s']/h3/a"%(randid) ).click() #根據xpath識別元素 36 time.sleep(3) 37 self.browser.switch_to.window(self.browser.window_handles[-1]) #獲取新打開結果頁的頁面句柄 38 log.info("結果頁:" + self.browser.title.encode("utf-8") ) #轉碼utf-8 39 self.assertIn("尚拓雲測",self.browser.title.encode("utf-8")) #斷言,轉碼 40 i = i + 1 41 time.sleep(5) 42 43 if __name__ == "__main__": 44 unittest.main()
測試結果以下:測試