Оба Chrome
и PhantomJS
драйверы selenium могут регистрировать все, что происходит в браузере боковая сторона. Указав путь к журналу службы при инициализации драйвера, вы можете контролировать, где будут записываться журналы. Например. для хром (в Python):
from selenium import webdriver
driver = webdriver.Chrome(service_log_path="/tmp/log")
driver.get("http://www.google.com")
driver.close()
После выполнения кода файл /tmp/log
будет содержать журналы служб, которые могут быть полезны для отладки:
[0.985][INFO]: Launching chrome: ...
[2.620][INFO]: RESPONSE InitSession {
"acceptSslCerts": true,
"applicationCacheEnabled": false,
"browserConnectionEnabled": false,
"browserName": "chrome",
"chrome": {
"userDataDir": "/var/folders/yy/ppdg927x4zv8b0rbzg1f_jzh0000gn/T/.org.chromium.Chromium.ibsof9"
},
"cssSelectorsEnabled": true,
"databaseEnabled": false,
"handlesAlerts": true,
"javascriptEnabled": true,
"locationContextEnabled": true,
"nativeEvents": true,
"platform": "Mac OS X",
"rotatable": false,
"takesHeapSnapshot": true,
"takesScreenshot": true,
"version": "37.0.2062.120",
"webStorageEnabled": true
}
[2.677][INFO]: Waiting for pending navigations...
[2.696][INFO]: Done waiting for pending navigations
[3.290][INFO]: Waiting for pending navigations...
[4.338][INFO]: Done waiting for pending navigations
[4.338][INFO]: RESPONSE Navigate
[4.339][INFO]: COMMAND CloseWindow {
}
[4.451][INFO]: RESPONSE CloseWindow
Есть ли способ получить ту же информацию, но с помощью Firefox
веб-драйвера?
Из того, что я вижу в исходном коде, Chrome
и PhantomJS
запускает новые службы через subprocess
и передает аргумент --log-path
Это. И эти службы несут ответственность за ведение журнала. Что касается Firefox
драйвера, реализация его совсем другая и основана на FirefoxBinary
классе.
Предоставленный пример и ссылки связаны с Python, но вопрос довольно общий и язык-агностик. По достоинству оценят любые указатели.