硒chromedriver读取所有console.log参数

时间:2019-05-17 12:36:43

标签: python selenium logging selenium-chromedriver console.log

我用selenium chrome驱动程序打开网站并从控制台读取。问题是我只能看到第一个参数。例如,这个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)

我希望我应该能够读取所有参数,就像在控制台窗口中看到它们一样。硒chromedriver是否可以提供所有这些选择?

1 个答案:

答案 0 :(得分:1)

您的代码是正确的,也许您在运行代码时看不到它。

我将在下面的示例中演示与您相同的配置,并输出所有控制台参数

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"