Как получить доступ к расширению Firefox, который я добавил в Selenium Webdriver?

Я знаю, что вы можете загрузить либо существующий профиль Firefox, либо создать его с помощью Ruby Bindings в самолете selenium-webdriver, как описано здесь:

http://code.google.com/p/selenium/wiki/RubyBindings

И затем используйте add_extension, чтобы добавить любое количество расширений Firefox к экземпляру, но что тогда? Окно расширения, которое я использую, не появляется во время теста. Как использовать расширение?

Есть ли способ открыть расширение по умолчанию, когда драйвер открывает Firefox?

Вот код, который я использую:

#!/usr/bin/env ruby
require "rubygems"
require "selenium-webdriver"

default_profile = Selenium::WebDriver::Firefox::Profile.from_name "default"
default_profile.add_extension("/Users/******/Library/Application Support/Firef\
ox/Profiles/wvon3h99.default/extensions/{9c51bd27-6ed8-4000-a2bf-36cb95c0c947}.\
xpi")

driver = Selenium::WebDriver.for(:firefox, :profile => default_profile)
driver.navigate.to "http://google.com"

element = driver.find_element(:name, 'q')
element.send_keys "Hello WebDriver!"
element.submit

puts driver.title

driver.quit

Ответ 1

Это зависит от расширения. Обычно поведение расширения может в какой-то степени контролироваться установкой соответствующих свойств (тех, которые вы можете найти в about: config) при создании профиля FF. Например, если окно Firebug открывается по умолчанию после запуска FF, я бы включил следующую строку в свой код:

default_profile["extensions.firebug.allPagesActivation"] = true

У расширений, которые я использую, обычно есть функция автоматического экспорта, которая автоматически отправляет данные на сервер или сохраняет их на диске. Я боюсь, что нет возможности контролировать расширение с помощью WebDriver, поэтому не все расширения будут использоваться в автоматизированных тестах.