хромовый драйвер селена читать все параметры console.log - PullRequest
0 голосов
/ 17 мая 2019

Я открываю сайт с драйвером Селена Хром и читаю из консоли. Проблема в том, что я вижу только первый параметр. Например, это console.log("first") дает мне «первое», как и ожидалось, но console.log("first", "second") дает мне только «первое».

from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

options = Options()
options.add_argument('--load-extension=./extension')
options.add_argument("--disable-notifications")
options.add_argument("--start-maximized")

d = DesiredCapabilities.CHROME
d['loggingPrefs'] = {'browser': 'ALL'}
self.browser = webdriver.Chrome(chrome_options=options, desired_capabilities=d)

Я ожидаю, что смогу прочитать все параметры так же, как вижу их в журнале в окне консоли. Есть ли какой-нибудь вариант для хромового драйвера селена, который дает мне их все?

1 Ответ

1 голос
/ 17 мая 2019

Ваш код правильный, возможно, вы не видите его при запуске кода.

Я продемонстрирую приведенный ниже пример с той же конфигурацией, что и у вас, и получу вывод всех параметров консоли

import re

from selenium import webdriver
from selenium.webdriver import DesiredCapabilities

dc = DesiredCapabilities.CHROME
dc['loggingPrefs'] = {'browser': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=dc)

# Prints 'first'
driver.execute_script("console.log('first')")
# Prints 'first' 'second'
driver.execute_script("console.log('first', 'second')")

# Filtering log by key 'first'
logs = list(filter(lambda l: 'first' in l['message'], driver.get_log('browser')))
for log in logs:
    source = log['source']
    parameters = re.findall(r'".*?"', log['message'])

    # Prints console output and parameters
    print(source, *parameters)

driver.quit()

Выходная консоль:

console-api "first"
console-api "first" "second"
...