robot framework擴充套件(動態載入自定義庫)
阿新 • • 發佈:2019-01-25
實現動態載入自定義庫的方法:
第一種方法
InheritSeleniumLibrary.py#-*-coding:utf-8-*- from robot.api import logger from SeleniumLibrary import SeleniumLibrary from SeleniumLibrary.base import keyword from SeleniumLibrary.keywords import BrowserManagementKeywords class InheritSeleniumLibrary(SeleniumLibrary): @keyword def open_browser(self, host):#不建議與SeleniumLibrary庫中方法重名 url = 'http://{}.com/'.format(host) browser_management = BrowserManagementKeywords(self) browser_management.open_browser(url, 'chrome') @keyword def mykeyword(self): logger.info(u'這是可以的')
testcase
*** Settings ***
Library ./InheritSeleniumLibrary.py
*** Test Cases ***
Use mykeyword
${test} = InheritSeleniumLibrary.Mykeyword
Log ${test}
另外eclipse的這個red外掛很好用,自動補全
第二種方法
Decomposition.py
#-*-coding:utf-8-*- from robot.libraries.BuiltIn import BuiltIn from SeleniumLibrary import SeleniumLibrary from SeleniumLibrary.base import keyword, LibraryComponent from SeleniumLibrary.keywords import BrowserManagementKeywords as bwmk,ElementKeywords,WaitingKeywords,WindowKeywords class symkeywordscomp(LibraryComponent): def __init__(self, ctx): LibraryComponent.__init__(self, ctx) self.retrytimes=5 self.retry_interval=1 @keyword def sym_login_content(self,username,pwd): """ 登入分解輸入 """ BuiltIn().wait_until_keyword_succeeds(5, 1, "input_text",u"//input[@placeholder='輸入郵箱賬號']",username) BuiltIn().wait_until_keyword_succeeds(5, 1, "input_password",u"//input[@placeholder='輸入密碼']",pwd) BuiltIn().wait_until_keyword_succeeds(5,1,"click_element",u"//a[text()='登入']") class Decomposition(SeleniumLibrary): def __init__(self, timeout=5.0, implicit_wait=0.0, run_on_failure='Capture Page Screenshot', screenshot_root_directory=None): SeleniumLibrary.__init__(self, timeout=timeout, implicit_wait=implicit_wait, run_on_failure=run_on_failure, screenshot_root_directory=screenshot_root_directory) self.add_library_components([symkeywordscomp(self)])#注意這裡是上面自定義類的名稱效果
還有一種get_instance的方式,沒試驗過這裡不說了。另外這裡都是繼承了seleniumlibrary,所以寫testcase時不要在引用selenium2library,否則執行會報錯。