最近在搞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()