最近在搞Robot Framework,吐槽一下別人寫的框架真是難用。
Robot Framework主要用的庫是Selenium2Library(以下簡稱S2L)進行驅動,但是調試不是很方便,所以我考慮如果可以在自己的框架中
調用其關鍵字方法就挺好,繼承是一個不錯的思路。
Python的繼承並不會直接繼承基類的__init__方法,所以如果子類需要直接調用基類的類變量,需要繼承其__init__方法,有兩種辦法,在子類__init__方法
中直接實例化一個基類對象或者直接調用基類__init__方法即可。
附上Python中調用S2L庫的測試代碼,該類是可以直接導入到RF中作為外部庫使用的。
1 #coding:utf-8 2 ''' 3 @version: 23.3.2016 4 @author: yndots 5 ''' 6 from Selenium2Library import Selenium2Library 7 from Selenium2Library.keywords import * 8 import time 9 from time import sleep 10 11 class _Basic(Selenium2Library): 12 13 def __init__(self): 14 # self.s2l=Selenium2Library() 15 Selenium2Library.__init__(self) 16 def my_open_browser(self): 17 #自己的打開瀏覽器方法 18 try: 19 driver = self._current_browser() 20 except RuntimeError, e: 21 self.open_browser("http://www.sz1card1.com", "chrome") 22 driver = self._current_browser() 23 return driver 24 def test_login(self): 25 # s2l=Selenium2Library() 26 driver=self.my_open_browser() 27 driver.implicitly_wait(8) 28 # driver=self._current_browser() 29 # _BrowserManagementKeywords().set_browser_implicit_wait(8) 30 # driver.click_element('//*[@id="txtBusinessAccount"]') 31 time.sleep(1) 32 driver.find_element_by_xpath('//*[@id="txtBusinessAccount"]').send_keys("liaoyu") 33 driver.find_element_by_xpath('//*[@id="txtUserAccount"]').send_keys("10000") 34 driver.find_element_by_xpath('//*[@id="txtUserPassword"]').send_keys("ly123456") 35 driver.find_element_by_xpath('//*[@id="btnlogin"]').click() 36 self.click_element("//div[text()='消費收銀']") 37 38 if __name__ == '__main__': 39 _Basic().test_login()