from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import unittest
class TestBrowserConsoleLogs(unittest.TestCase):
def setUp(self):
chrome_options = Options()
chrome_options.set_capability('goog:loggingPrefs', {'browser': 'ALL'})
self.driver = webdriver.Chrome(options=chrome_options)
self.wait = WebDriverWait(self.driver, 10)
def test_capture_console_logs(self):
self.driver.get('https://example.com')
# Wait for the page title to be present as indication of load
self.wait.until(EC.title_contains('Example Domain'))
logs = self.driver.get_log('browser')
self.assertTrue(len(logs) > 0, 'Console logs should not be empty')
severe_errors = [entry for entry in logs if entry['level'] == 'SEVERE']
self.assertEqual(len(severe_errors), 0, f'Found SEVERE errors in console logs: {severe_errors}')
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()The setUp method configures Chrome to capture browser console logs by setting the goog:loggingPrefs capability.
The test navigates to https://example.com and waits explicitly for the page title to confirm the page loaded.
It then retrieves the browser console logs using get_log('browser').
Assertions check that logs are not empty and that no log entry has the level SEVERE, which indicates errors.
The tearDown method closes the browser to clean up.
This structure follows unittest framework conventions and uses explicit waits for reliability.