Ruby&Capybaraを使用して、ブラウザのコンソールログ(カテゴリ:情報)をキャプチャする必要があります。これまで、driver.manage.logs.get(:browser)
または(:client)
しかし、これを使用すると、結果は私が望むものではありません。 Seleniumとブラウザー間の相互作用の結果が表示され、実行のために送信されたjavascriptステートメントを確認できますが、結果の出力はキャプチャされません。
Seleniumの使用時にログを使用できるかどうかは、Seleniumで使用しているブラウザーによって異なります。 Firefoxを使用している場合は、ログ取得APIをサポートしていないため運が悪いでしょうが、使用しているためChromeアクセス可能です。発生している問題は、デフォルトでは、WARNまたはERRORレベルのログのみがキャプチャされます。loggingPrefs機能を使用して、ドライバ登録でこれを変更できます。
Capybara.register_driver :logging_Selenium_chrome do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(loggingPrefs:{browser: 'ALL'})
browser_options = ::Selenium::WebDriver::Chrome::Options.new()
# browser_options.args << '--some_option' # add whatever browser args and other options you need (--headless, etc)
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options, desired_capabilities: caps)
end
次に、:logging_Selenium_chrome
をドライバーとして使用するように指定します
Capybara.javascript_driver = :logging_Selenium_chrome # or however else you're specifying which driver to use
これにより、テストでログを取得できるようになります。
page.driver.browser.manage.logs.get(:browser)
Thomas Walpole 答えは正しいですが、最近はchromeをドライバーとして使用している場合は、使用する必要があるようです
Selenium::WebDriver::Remote::Capabilities.chrome( "goog:loggingPrefs": { browser: 'ALL' } )
このソリューションでのみ、loggingPrefs
の代わりにgoog:loggingPrefs
に注意してください。ログにconsole.log
を出力できました。
しばらくして、ここから取得しました https://intellipaat.com/community/5478/getting-console-log-output-from-chrome-with-Selenium-python-api-bindings afterいくつかの苛立たしい試み。