2009/11/23

FireWatirでProxy設定

Webのテストやら自動化やらで便利なRubyのライブラリWatir

最近はFirefoxも使えるようになってさらに便利になったのだが、プロキシの設定を動的に変えたかったのでちょいとハック。

FireWatirをGemで入れて、以下のコードをfirefox.rb内のFireWatir::Firefoxのpublicメソッドに追加すればOK

def set_proxy_host(host) jssh_command = 'var prefsCom = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);' jssh_command << %{prefsCom.setCharPref("network.proxy.http", "#{host}");} js_eval jssh_command end def set_proxy_port(port) jssh_command = 'var prefsCom = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);' jssh_command << %{prefsCom.setIntPref("network.proxy.http_port", #{port.to_s});} js_eval jssh_command end def set_proxy_type(type) jssh_command = 'var prefsCom = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);' jssh_command << %{prefsCom.setIntPref("network.proxy.type", #{type.to_s});} js_eval jssh_command end

利用例は次のとおり

require 'firewatir' ff = FireWatir::Firefox.new ff.set_proxy_host('127.0.0.1') ff.set_proxy_port(8080) ff.set_proxy_type(2) #手動プロキシー設定

network.proxy.ほげほげを変えればいろいろいじれる。ここを見たよ。

setIntPrefをgetIntPrefにすれば値も取れる。

※FireWatirの利用にはFirefoxにJSSHというアドオンが必要。