Firefox(46)+ Capybara + Seleniumを使用してリモートWebサイトからデータを解析するソリューションがあります。私はpath_to_firefox_profile
引数をinitializeに渡します。これは実際のFirefoxプロファイルフォルダです。Capybara/Selenium - 各呼び出しでSeleniumドライバをリロードする力
a = MyParser.new(profile_a)
a.parse_something
b = MyParser.new(profile_b)
b.parse_something
私は別のプロファイルを指定したにも関わらず...インスタンスb
は、プロファイルAがロードされています:
問題は、私はこのコードを実行した場合ということです。
しかし、これらの2行を別々のプロセスで実行すると、私は自分が望むものを得ることができます。ですから、私はそれらのうちの1つ(CapybaraまたはSelenium)がプロファイル設定をルビプロセスごとに1回保存し、必要に応じて変更しないと仮定します。
同じプロセス内でプロファイルを変更する方法はありますか?
私はFirefoxにしようとしますが、新しいURLを訪れたときに助けになりません。Seleniumは新しいプロフィールの代わりにまったく同じプロフィールのFirefoxウィンドウを開きます。
class MyParser
def initialize(path_to_firefox_profile)
Capybara.register_driver(:selenium) do |app|
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 150
Capybara::Selenium::Driver.new(app,
profile: path_to_firefox_profile,
http_client: client)
end
end
def parse_something
# perform some parsings & return result
end
end
これは私が探していたものです。それは動作します、ありがとう! – nattfodd