RobotFramework - 在 selenium2library 中无法识别使用自定义库打开的浏览器

RobotFramework - Browser opened with custom library cannot be recognized in selenium2library

我是 Python 和 Robot 框架的初学者。我正在尝试在我的机器人框架测试套件中创建和学习使用自定义库。

我已经使用以下代码创建了一个自定义库:

from selenium import webdriver
import time

class CustomLibrary:
def Open_My_Browser(self):
    browser = webdriver.Chrome()
    browser.maximize_window()
    browser.get("http://demo.guru99.com/V4/")
    time.sleep(5)

我导入了这个自定义库并指定了关键字 "Open My Browser"。此关键字执行我的自定义库中的代码,但接下来的步骤来自 selenium2library,例如单击按钮。

执行停止,我收到消息 "No browser is open"。我知道我的 selenium2library 无法识别由我的自定义库打开的浏览器。但我无法解决这个问题。谁能给点建议

我的机器人文件:

Documentation    Test the Guru99 Banking Website
Library         Selenium2Library
Library     CustomLibrary.py

*** Test Cases ***

Test Case: 001 - The user should be able to navigate to Guru99
    [Tags]  Smoke
    Open the Guru99 website

*** Keywords ***
Open the Guru99 website
    Open My Browser ```

当然,浏览器会话不会被重用 - 它由一个单独的对象拥有,SeleniumLibrary/Selenium2Library 不知道也无法访问它。
这与您手动建立 DB 或 ssh 连接,然后期待一个库开始使用它是一样的——这不会发生。

如果你想使用SeleniumLibrary中的关键字,你需要使用它的Open Browser,所以它有引用它(浏览器)。

您可以添加外部 Python 类(关键字)作为 plugins

*** Settings ***
Library    SeleniumLibrary         plugins=${CURDIR}/Plugin.py

*** Test Cases ***
Open My Browser
    Open My Browser

Plugin.py中的内容如下:

from SeleniumLibrary import BrowserManagementKeywords
from robot.api.deco import keyword
import time


class Plugin(BrowserManagementKeywords):
    @keyword
    def open_my_browser(self):
        self.open_browser("http://demo.guru99.com/V4/", "chrome")
        self.driver.maximize_window()
        time.sleep(5)

顺便说一句,您也可以通过Extending SeleniumLibrary创建一个新的库。然后将Library Selenium2Library替换为Library <YourSeleniumLibrary>