2017-10-20 123 views
1

我已经创建了一个python代码来初始化chrome浏览器,并且我想将此驱动程序实例传递给Robot Framework,以便RF的关键字可以在此实例上工作。请让我知道我怎么能这样做。 为intializing文件的PY代码:机器人框架:如何在Robot框架中使用用户创建的浏览器实例

'class SeleniumKeywords: 

    ROBOT_LIBRARY_SCOPE = 'GLOBAL' 

    def __init__(self): 
     self.driver = None 

    def open_browser(self, browser="chrome"): 
     driver_class = drivers[browser] 
     self.driver = driver_class() 

    def go_to(self, url): 
     self.driver.get(url)' 

现在机器人的框架使用它时,浏览器打开,但RF关键字就可以了(selenium2library关键字)不起作用。基本上我使用自定义关键字打开浏览器实例,并最大限度地使用RF中的selenium2library关键字。不幸的是,它不起作用。请让我知道如何将这种浏览器实例传递给RF:

'*** Settings *** 
Library ExtendedSelenium2Library 
Library ../Resources/SeleniumKeywords.py  
Resource ../Global/GlobalConfig.robot 




*** Test Cases *** 
Reuse Session ID 
    SeleniumKeywords.Open Browser chrome 
    maximize browser window 
    SeleniumKeywords.Go To ${URL} ' 

的最大化浏览器窗口是一个RF关键词,我想这对我的browserinstance工作

+0

有你创建自己的驱动程序,而不是使用'ExtendedSelenium2Library'创建的驱动程序的理由?为什么不让你的代码使用由'ExtendedSelenium2Library'打开的代码而不是其他方式? –

+0

“最大化浏览器窗口”的公正警告:它并不总是像广告一样工作,尤其是在Chrome上。另外,我可以缩短测试用例:'打开浏览器$ {URL} chrome','最大化浏览器窗口'。如果“最大化浏览器窗口”适用于您的设置,那将完成您似乎正在尝试执行的操作。您不需要专门调用SeleniumKeywords,您已经使用'Library ExtendedSelenium2Library'调用来初始化实例中的确切关键字。 –

回答

0

我写我自己的图书馆,但我扩展了Selenium2Library,我可以将Selenium2Library关键字与我自己的关键字混合使用。 Selenium2Library或者你的情况下,ExtendedSelenium2Library不会识别刚刚在Python中启动的会话,并会给出“No browser is open”错误。 “最大化浏览器窗口”关键字依赖于先前通过“打开浏览器”关键字打开的浏览器。

如果你真的需要自己的硒库,你可以做这样的事情:

class SeleniumKeywords(ExtendedSelenium2Library): 

    def go_to(self, url, browser="chrome"): 
     self.open_browser(url, browser)