Как настроить geckodriver с уровнем журнала и местоположением журнала через selenium и python?

Я новичок в python, я написал программу для сбора информации для меня (python + selenium + geckodriver + firefox), все работало нормально, но geckodriver.exe генерировал слишком много журнала, иногда размер одного файла geckodriver.log даже достигал 8 ГБ .

Я искал галактику, google и stackoverflow, я не могу найти решение для отключения geckodriver.log, этот вопрос похож на мой, я знаю, что использование какого-либо параметра может уменьшить журнал

geckodriver.exe --log fatal

И я знаю, что python может назначить путь geckodriver

driver=webdriver.Firefox(executable_path='C:\geckodriver.exe')

Можно ли их объединить вместе? Как показано ниже:

driver=webdriver.Firefox(executable_path='C:\geckodriver.exe --log fatal')

Я пробовал, но не смог. Кто-нибудь может мне помочь? Спасибо!

stackoverflow.com/a/21688906/8150371
Stack 13.09.2018 18:15
1
1
3 423
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

При работе с Selenium v3.14.0 клиент Python на уменьшить журналы, созданные GeckoDriver и перенаправлении журналов на конкретный лог-файл вы можете использовать следующее решение:

  • Использование service_log_path:

    driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe', service_log_path='./Logs/geckodriver_service_log_path.log')
    
  • Использование log_path:

    driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe', log_path='./Logs/geckodriver_log_path.log')
    
  • Чтобы настроить Уровень журнала и включить путь к журналу, вы можете использовать следующее решение:

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.firefox.options import Log
    
    log = Log()
    log.level = "TRACE"
    options = Options()
    options.add_argument(log.level)
    driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe', service_log_path='./Logs/geckodriver_service_log_path.log')
    # driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe', log_path='./Logs/geckodriver_log_path.log')
    driver.get('http://google.com/')
    print(driver.title)
    driver.quit()
    

Я собираюсь попробовать, тоже большое спасибо

LadyKiller2018 16.09.2018 04:08

Если вы обратитесь к документации объекта параметров Firefox, вы увидите, что журнал является свойством этого объекта.

https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions

так что вы можете добавить это как

options = webdriver.FirefoxOptions()

options.log.level = "TRACE"

driver = webdriver.Firefox(options=options)

вы также можете установить это как:

options.set_capability("moz:firefoxOptions", {'log': {'level': 'TRACE'}})
driver = webdriver.Firefox(options=options)

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

Я думаю, что установка вашего service_log_path = '' в ничто отключает журнал. Я могу ошибаться, но, похоже, у меня нет файла журнала, и я использую эту настройку. В общем, я устал печатать ...

browser = webdriver.Firefox(service_log_path='')

(Я использовал этот параметр, потому что каждый раз, когда я пытался указать ПУТЬ, я получал ошибку.) Итак, я вошел в папку ...

C:\Users\current-user\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\firefox

Затем я нашел файл service.py и в строке 25-26 удалил geckodriver.log из ...

    def __init__(self, executable_path, port=0, service_args=None,
             log_path="geckodriver.log", env=None):

Это не устранило мою проблему, поэтому я зашел в файл webdriver.py в той же папке в строке 53 и удалил geckodriver.log из ...

service_log_path="geckodriver.log", firefox_options=None,

и бац, теперь мне больше не нужно ничего устанавливать service_log_path. Но, возможно, если вы установите путь к журналу на service_log_path = "", это решит вашу проблему. Не уверен, что это именно то, что вы ищете, но это устранило мою проблему. Кажется, у меня вообще нет файла журнала, не говоря уже о размере 8 ГБ.

Другие вопросы по теме