1. 程式人生 > >robot framework擴充套件(動態載入自定義庫)

robot framework擴充套件(動態載入自定義庫)

實現動態載入自定義庫的方法:

第一種方法

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,否則執行會報錯。