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

时间:2019-04-30 13:54:07

标签: python robotframework 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)

我导入了此自定义库,并指定了关键字“打开我的浏览器”。这个关键字从我的自定义库中执行代码,但是接下来的步骤就像单击按钮一样来自selenium2library。

执行停止,并显示消息“未打开浏览器”。我知道我的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 ```

2 个答案:

答案 0 :(得分:3)

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

如果要在SeleniumLibrary中使用关键字,则需要使用其Open Browser,因此它具有对它的引用(浏览器)。

答案 1 :(得分:1)

您可以将外部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>