Как поделиться текущим объектом браузера (webdriver) в новых файлах ключевых слов python - PullRequest
0 голосов
/ 20 января 2019

Я использую приведенный ниже код, но он возвращает: RuntimeError («Нет открытого браузера»)

class UtilityFunction(ExtendedSelenium2Library):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

    def __init__(self):
        # super.__init__()
        self.lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
        self.driver=self.lib._current_browser()

1 Ответ

0 голосов
/ 20 января 2019

Код в __init__() запускается при инициализации объекта - в Robot Framework, который происходит при импорте библиотеки (в начале файла). На данный момент нет открытого браузера - вы еще не запустили установку пакета, ключевое слово Open Browser не было запущено; таким образом, исключение.

«Исправление» - не получение экземпляра веб-драйвера в конструкторе:

def __init__(self):
    # super.__init__()
    self.lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
    self._driver = None  # internal attribute, don't use it in the methods, but "self.driver"

@property
def driver(self):
    if self._driver is None:
        self._driver=self.lib._current_browser()
    return self._driver

@driver.setter
def driver(self, custom):
    self._driver=custom

Этот подход использует свойства класса - автоматический метод получения и установки; когда ваш код использует self.driver, если его значение не определено (по-прежнему None), оно будет автоматически присвоено возвращению self.lib._current_browser().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...