В библиотеку ничего не встроено, чтобы вы могли делать то, что хотите как таковое . Однако вы можете создать свою собственную библиотеку, которая может получить доступ к функциям selenium. Это можно сделать двумя способами, которые требуют создания собственной библиотеки в python. Эти методы предназначены для подкласса Selenium2Library или для получения ссылки на экземпляр Selenium2Library.
. Один из способов доступа к внутренним элементам Selenium2Library - написать класс библиотеки, который наследуется от Selenium2Library. Когда вы это сделаете, у вас есть доступ ко всему в исходной библиотеке. Затем вы можете вернуть ссылку на объект WebDriver или просто написать свои собственные ключевые слова в python.
В качестве примера, это обычная библиотека селена, которая имеет новое ключевое слово, которое вернет текущий экземпляр WebDriver , Он делает это, вызывая частный (к исходному методу Selenium2Library) _current_browser
. Поскольку это частный метод, нет никакой гарантии, что он выдержит проверку временем, но в то время, когда я пишу это, он существует.
Сначала создайте новый файл python с именем CustomSeleniumLibrary.py. Поместите его туда, где робот может его найти - проще всего просто положить его в ту же папку, что и тестовый набор, который будет его использовать. Поместите в этот файл следующее:
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:
Сообщение cryptic ...
доказывает, что переменная на самом деле содержит ссылку к объекту WebDriver python. Используя синтаксис расширенного синтаксиса робота, вы можете затем вызвать методы и получить доступ к этим объектам, если хотите. Я не рекомендую делать это таким образом, но я думаю, что очень интересно, что робот поддерживает его:
| | log | The page title is ${webdriver.title}
. Второй способ выполнения это использование метода робота для получения экземпляра библиотеки, после чего вы можете получить доступ к объекту, как хотите. Это описано в руководстве пользователя робота; см. Получение активного экземпляра библиотеки из Robot Framework в руководстве пользователя 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}