如何访问我在Selenium Webdriver中添加的Firefox扩展?

时间:2011-07-20 20:54:19

标签: ruby firefox rubygems firefox-addon selenium-webdriver

我知道您可以加载现有的Firefox配置文件,或者在selenium-webdriver gem中使用Ruby Bindings创建一个,如下所述:

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 个答案:

答案 0 :(得分:1)

这取决于扩展。通常,扩展的行为可以在某种程度上通过在创建FF配置文件时设置适当的属性(您可以在about:config中找到的属性)来控制。例如,在FF启动后默认打开Firebug窗口,我将在我的代码中包含以下行:

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

我使用的扩展通常具有某种自动导出功能,可自动将数据发送到服务器或将其保存在磁盘上。我担心无法使用WebDriver控制扩展,因此并非所有扩展都可用于自动化测试。