Я извлекаю console.log
информацию, используя Selenium (Python, ChromeDriver).
Отметки времени, которые я получаю из browser.get_log('browser')
, не совпадают с отметками времени, полученными из console.log.
Вот простая HTML страница, которую я использую для тестирования
<html>
<body>
<script>
console.log('START');
setTimeout(() => { console.log("After 1s"); }, 1000);
setTimeout(() => { console.log("After 2s"); }, 2000);
setTimeout(() => { console.log("After 4s"); }, 4000);
setTimeout(() => { console.log("After 8s"); }, 8000);
console.log('END');
</script>
</body>
</html>
Вот код Selenium:
d = DesiredCapabilities.CHROME
d['goog:loggingPrefs'] = { 'driver': 'ALL', 'browser':'ALL' }
browser = webdriver.Chrome(desired_capabilities=d)
browser.get('file:///.....test-console.html')
time.sleep(10)
logs = [l for l in browser.get_log('browser') if l['source'] == 'console-api']
for item in logs:
print(item['timestamp'], item['message'])
Вот вывод из console.log на Chrome
![enter image description here](https://i.stack.imgur.com/fZrcm.png)
Вот выход из Selenium (отметка времени преобразуется в даты)
11:19:22.014 test-console.html 4:16 "START"
11:19:22.014 test-console.html 9:16 "END"
11:19:32.032 test-console.html 5:35 "After 1s"
11:19:32.032 test-console.html 6:35 "After 2s"
11:19:32.032 test-console.html 7:35 "After 4s"
11:19:32.032 test-console.html 8:35 "After 8s"
Две вещи, на которые следует обратить внимание :
- Между метками времени консоли браузера и сценария Selenium есть небольшое смещение. Ничего страшного.
- Код Selenium возвращает идентичные метки времени для событий, которые должны быть на расстоянии нескольких секунд. Это нехорошо.
Я что-то не так делаю?
Как получить правильные метки времени от Selenium?
Другая информация отладки
Darwin Kernel Version 19.0.0 ... root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64
Python 3.7.5
selenium==3.141.0
ChromeDriver 78.0.3904.105