库中没有内置任何东西可以让你做你想做的事情本身。但是,您可以创建自己的可以访问 selenium 功能的库。有两种方法可以做到这一点,这两种方法都需要在 python 中创建自己的库。这些方法用于继承 Selenium2Library,或获取对 Selenium2Library 实例的引用。
创建一个继承 Selenium2Library 的自定义库
访问 Selenium2Library 内部的一种方法是编写一个继承自 Selenium2Library 的库类。当您这样做时,您可以访问原始库中的所有内容。然后您可以返回对 WebDriver 对象的引用,或者您可以在 python 中编写自己的关键字。
例如,这是一个自定义 selenium 库,它有一个新的关键字,它将返回当前的 WebDriver 实例。它通过调用私有(原始 Selenium2Library)方法_current_browser 来实现这一点。由于这是一个私有方法,因此无法保证它会经受住时间的考验,但在我写这篇文章的时候它已经存在了。
创建自定义 selenium 库
首先,创建一个名为 CustomSeleniumLibrary.py 的新 python 文件。把它放在机器人可以找到的地方——最简单的方法就是把它放在与将要使用它的测试套件相同的文件夹中。将以下内容放入该文件中:
from Selenium2Library import Selenium2Library
# create new class that inherits from Selenium2Library
class CustomSeleniumLibrary(Selenium2Library):
# create a new keyword called "get webdriver instance"
def get_webdriver_instance(self):
return self._current_browser()
创建一个使用该库的测试用例
接下来,编写一个使用它而不是 Selenium2Library 的测试用例。例如:
*** Settings ***
| Library | CustomSeleniumLibrary.py
| Suite Teardown | close all browsers
*** Test Cases ***
| Example using custom selenium library
| | Open browser | http://www.example.com | browser=chrome
| | ${webdriver}= | Get webdriver instance
| | log | webdriver: ${webdriver}
运行测试
像运行任何其他测试一样运行测试。完成后,您应该会在日志中看到类似的内容:
16:00:46.887 INFO webdriver: <selenium.webdriver.chrome.webdriver.WebDriver object at 0x10b849410>
在测试用例中使用对象
神秘的...<selenium....WebDriver object...> 消息证明该变量实际上持有对python WebDriver 对象的引用。如果需要,您可以使用机器人的extended variable syntax 调用方法并访问该对象的属性。我不建议这样做,但我认为机器人支持它真的很有趣:
| | log | The page title is ${webdriver.title}
创建一个引用 Selenium2Library 的自定义库
实现此目的的第二种方法是使用机器人获取库实例的方法,此时您可以随心所欲地访问该对象。这记录在机器人用户指南中;参见Robot Framework User's Guide 中的Getting active library instance from Robot Framework。
例如,上面示例中的 get_library_instance 关键字如下所示:
from robot.libraries.BuiltIn import BuiltIn
def get_webdriver_instance():
se2lib = BuiltIn().get_library_instance('Selenium2Library')
return se2lib._current_browser()
请注意,在这种情况下,您必须同时包含 Selenium2Library和您的自定义库:
*** Settings ***
| Library | Selenium2Library
| Library | CustomSeleniumKeywords.py
| Suite Teardown | close all browsers
*** Test Cases ***
| Example using custom selenium keyword
| | Open browser | http://www.example.com | browser=chrome
| | ${webdriver}= | Get webdriver instance
| | log | webdriver: ${webdriver}