我是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 ```
答案 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>