【问题标题】:Robot Framework: How to use User created browser instance in Robot framework机器人框架:如何在机器人框架中使用用户创建的浏览器实例
【发布时间】:2018-04-01 07:00:23
【问题描述】:

我创建了一个 python 代码来初始化一个 chrome 浏览器,我想将此驱动程序实例传递给 Robot Framework,以便 RF 的关键字可以在此实例上工作。请让我知道我该怎么做。 初始化文件的 Py 代码是:

'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)'

现在在 Robot 框架中使用它时,浏览器会打开,但 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 关键字,我希望它在我的浏览器实例上工作

【问题讨论】:

  • 您创建自己的驱动程序而不是使用ExtendedSelenium2Library 创建的驱动程序有什么原因吗?为什么不让您的代码使用ExtendedSelenium2Library 打开的代码,而不是相反?
  • Maximize Browser Window 上的公平警告:它并不总是像宣传的那样工作,尤其是在 Chrome 上。另外,我可以缩短您的测试用例:Open Browser ${URL} chromeMaximize Browser Window。如果 Maximize Browser Window 适用于您的设置,那将完全按照您的意图进行。您不需要专门调用 SeleniumKeywords,您已经使用 Library ExtendedSelenium2Library 调用在您的实例中初始化了这些确切的关键字。

标签: python selenium-webdriver robotframework


【解决方案1】:

我已经编写了自己的库,但我扩展了 Selenium2Library,我可以将 Selenium2Library 关键字与我自己的关键字混合使用。 Selenium2Library 或在您的情况下,ExtendedSelenium2Library 将无法识别您刚刚在 Python 中启动的会话,并会给出“没有打开浏览器”错误。 “最大化浏览器窗口”关键字依赖于之前使用“打开浏览器”关键字打开的浏览器。

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

class SeleniumKeywords(ExtendedSelenium2Library):

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

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 2014-09-05
    • 2019-10-25
    • 2022-01-22
    • 2016-09-06
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多