web-dev-qa-db-ja.com

Chrome with Selenium Python APIバインディングからconsole.log出力を取得する

Seleniumを使用してChromeでPython AP​​Iバインディングを介してテストを実行していますが、Chromeを構成してconsole.logを作成する方法がわかりませんロードされたテストからの出力が利用可能。 WebDriverオブジェクトにはget_log()およびlog_types()メソッドがあり、Javaで物事を行う方法を示す Get chromeのコンソールログ が表示されています。 。しかし、Python AP​​IにはJavaのLoggingPreferences型に相当するものがありません。必要なことを達成する方法はありますか?

52
msridhar

さて、最終的にそれを理解しました:

from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities=d)

# load the desired webpage
driver.get('http://foo.com')

# print messages
for entry in driver.get_log('browser'):
    print(entry)

sourceフィールドが'console-api'と等しいエントリはコンソールメッセージに対応し、メッセージ自体はmessageフィールドに格納されます。

Chromedriver 75.0.3770.8以降では、loggingPrefsの代わりにgoog:loggingPrefsを使用する必要があります。

d['goog:loggingPrefs'] = { 'browser':'ALL' }
83
msridhar

答えを完成させるには、chromedriver 75.0.3770.8以降、goog:loggingPrefsの代わりにloggingPrefs

Chromedriver changelogをご覧ください: http://chromedriver.chromium.org/downloads またはこのバグ: https://bugs.chromium.org/p/chromedriver/issues/detail?id= 2976

2
Perdu