selenium-webdriver循環點擊百度搜索結果以及獲取新頁面的handler

 

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

測試結果以下:測試

相關文章
相關標籤/搜索