В чем разница между webdriver.Firefox () и webdriver.Firefox (<путь к исполняемому файлу gecko>) в селене? - PullRequest
0 голосов
/ 06 сентября 2018

Я просматривал селен 3 для документации по python, но все еще не мог понять разницу между этими двумя вызовами драйверов.

webdriver.Firefox() 

и

webdriver.Firefox(<path to gecko executable >) 

при использовании Selenium?

Поскольку я работаю над проектом по утилизации, это может мне очень помочь.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

webdriver.Firefox ()

Согласно документации в selenium.webdriver.firefox.webdriver следующая строка является конструктором по умолчанию .

driver = webdriver.Firefox()

Пока вы используете конструктор по умолчанию , ваш скрипт / программа ожидает, что базовая переменная OS PATH будет содержать абсолютный путь GeckoDriver который начнет новый локальный сеанс браузера Firefox


webdriver.Firefox (executable_path = r'C: \ путь \ к \ geckodriver.exe ')

Опять же, согласно документации selenium.webdriver.firefox.webdriver полная / полная подпись webdriver.Firefox () выглядит следующим образом:

class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path='geckodriver', options=None, service_log_path='geckodriver.log', firefox_options=None, service_args=None, desired_capabilities=None, log_path=None)

Это обеспечивает следующее:

  • Запускает новый локальный сеанс Firefox.
  • На основе комбинации и специфики различных аргументов ключевых слов будет создан словарь возможностей, который передается на удаленный конец.
  • Аргументы ключевого слова, данные этому конструктору, помогают облегчить настройку сеансов Firefox WebDriver с различными параметрами. Они отображаются в словарь возможностей, который передается на удаленный конец.
  • Поскольку некоторые параметры, такие как firefox_profile и options.profile, являются взаимоисключающими, приоритет дается от того, насколько специфичен параметр. Возможности - это наименее конкретный аргумент ключевого слова, за которым следуют параметры, за которыми следуют firefox_binary и firefox_profile.
  • На практике это означает, что если оба firefox_profile и options.profile установлены, то выбранный экземпляр профиля всегда будет исходить из наиболее конкретной переменной. В этом случае это будет firefox_profile. Это приведет к тому, что options.profile будет игнорироваться, поскольку он считается менее конкретным параметром, чем аргумент ключевого слова firefox_profile верхнего уровня. Точно так же, если бы вы указали возможность Base [строка [moz: firefoxOptions]] [«профиль»] Base64, она будет располагаться ниже options.profile.

Так что ваш Test Suite включает тестовых наборов с несколькими версиями GeckoDriver , опции , Профили Firefox и Возможности , вы всегда можете упомянуть их при инициализации нового экземпляра WebDriver и Просмотр веб-страниц сеанс.

Например, если вы поместите geckodriver.exe v0.21.0 в C:\\geckodriver_0_21_0\\, вы можете указать следующее:

# Windows OS style
driver = webdriver.Firefox(executable_path=r'C:\geckodriver_0_21_0\geckodriver.exe')
# Linux OS style
driver = webdriver.Firefox(executable_path='path/to/geckodriver')
0 голосов
/ 06 сентября 2018

Если вы определяете путь для драйвера, функциональный вызов ищет файл в пути и работает соответственно. Вторая функция driver.Firefox() / driver.Chrome() ищет существующее программное обеспечение в системе. если браузер отсутствует, вы получите следующую ошибку.

 WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

Мое мнение - всегда использовать абсолютный путь для определения драйвера.

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('path/to/installed firefox binary')
driver = webdriver.Firefox(firefox_binary=binary)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...