使用机器人框架进行 Web 自动化时如何从自定义库中实例化 webdriver 对象

how to instantiate the webdriver object from the custom library when doing web automation using robot framework

在为 Web 自动化自定义库中定义用户关键字时,应导入哪个库?selenium2library 或从 selenium.How 导入 webdriver 以使用 webdriver 单击某些 elements.Kindly 举例说明

我发现一般继承Selenium2Library就够了,像这样

from Selenium2Library import Selenium2Library

class MySelenium2Library(Selenium2Library):
    def my_keyword(self):
        my_element = self.get_my_element()
        self.click_element(my_element)

在 Robot 中导入这个新库

*** Settings ***
Library    MySelenium2Library.py

*** Test Cases ***
Test 1
    My Keyword

我不需要 webdriver 来点击元素。我使用 Selenium2Library 点击方法进行所有点击,例如 click_element.

在大多数情况下,您不需要实例化 webdriver 对象。通常您使用 Selenium2Library 已有的 webdriver 实例。您如何访问该实例取决于您计划如何与 Selenium2Library 交互。有关选项,请参阅用户指南中的“Extending existing test libraries”部分。每个选项都有利有弊。

如果您继承了 Selenium2Library,那么您将通过 self._current_browser() 访问驱动程序。

如果您计划直接使用 Selenium2Library 而不是继承,您将同时声明 Selenium2Library 和您的自定义库。访问驱动程序最方便的方法是通过私有 属性,如下所示。

from robot.libraries.BuiltIn import BuiltIn

class Selenium2LibraryExt(object):

    @property
    def _s2l(self):
        return BuiltIn().get_library_instance('Selenium2Library')

    @property
    def _driver(self):
        return self._s2l._current_browser()

    def perform_search(self, criteria):
        textbox = self._driver.find_element_by_name('q')
        textbox.send_keys(criteria)
        textbox.submit()

测试套件文件:

*** Settings ***
Test Teardown     Close All Browsers
Library           Selenium2Library
Library           c:/ws/Selenium2LibraryExt.py

*** Test Cases ***
Do a search
    Open Browser    http://www.google.com/    gc
    Perform Search    happiness