当前位置: 首页 > 知识库问答 >
问题:

如何通过Selenium和Python配置GeckoDriver的日志级别和日志位置?

路扬
2023-03-14

我是python新手,我写了一个程序为我收集信息(python selenium geckodriver firefox),一切都很好,但geckodriver。exe生成的日志太多,有时单个文件大小为geckodriver。日志甚至达到8GB。

我在galaxy、google和stackoverflow上搜索过,我找不到禁用geckodriver的解决方案。log,这个问题和我的类似,我知道使用一些参数可以减少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')

我试过了,但失败了,有人能帮我吗?谢谢!

共有3个答案

齐才艺
2023-03-14

我认为将service\u log\u path=“”设置为nothing会关闭日志。我可能错了,但我似乎没有日志文件,这就是我使用的设置。总之,我厌倦了打字。。。

browser = webdriver.Firefox(service_log_path='')

(我使用该设置是因为每次尝试指定路径时都会出现错误。)所以我进入文件夹。。。

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

然后我找到了文件服务。py和25-26号线我移除了geckodriver。日志来自。。。

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

这并没有解决我的问题,所以我进入了文件webdriver。py在同一文件夹的第53行删除了geckodriver。日志来自。。。

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

现在我不必再将service\u log\u path设置为nothing。但是,如果您将日志路径设置为service\u log\u path=,则可能会解决您的问题。不确定这是否正是你想要的,但它解决了我的问题。我似乎根本没有日志文件,更不用说8gb大小的了。

周宏胜
2023-03-14

如果您参考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。登录到gekodriver所在的目录

司寇旺
2023-03-14

在使用Selenium v3.14.0 Python Client减少GeckoDriver生成的日志并将日志重定向到特定的日志文件时,您可以使用以下解决方案:

>

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()
 类似资料:
  • 我想更改quarkus应用程序的日志级别,在我可以找到任何引用的地方,它都指向application.properties文件。 我需要任何额外的扩展来让它工作吗? 我读过这个问题,但对我不起作用。我真的不知道,我从Quarkus bootstrap创建了一个简单的应用程序,但我仍然有同样的行为。

  • 我在我的项目中进行了强制日志记录,并且我很难抑制我不想要的日志记录语句。 还有,我在使用log4j时看不到这些记录器。我正在尝试学习Logback,因为我已经被指派来评估它作为团队可能的升级。

  • 我正在使用一个第三方库,其来源我无法访问。这个库在错误级别上做了很多日志记录。它生成的这些错误级日志事件很有趣,但我们不认为它们是错误级事件。

  • 使用java.util.Logging时,可以在logging.properties文件中配置特定类的日志级别(即具有类名称的子记录器),如下所示: 我使用类名在MyClass中创建子记录器,如下所示: 在Google Web Toolkit gwt.xml文件中有类似的配置方法吗?

  • SLF4J具有以下日志级别 JDK日志记录具有以下日志级别 如果我想将日志级别设置为DEBUG,那么该级别在JDK日志中不可用。谁能解释一下在这种情况下我们如何获得调试级别的日志记录。对于这种情况,我们需要做什么额外的配置吗? 已更新 这是我的属性文件配置 请让我知道我哪里错了。

  • 日志和配置的重要性 前面已经介绍过日志在我们程序开发中起着很重要的作用,通过日志我们可以记录调试我们的信息,当初介绍过一个日志系统seelog,根据不同的level输出不同的日志,这个对于程序开发和程序部署来说至关重要。我们可以在程序开发中设置level低一点,部署的时候把level设置高,这样我们开发中的调试信息可以屏蔽掉。 配置模块对于应用部署牵涉到服务器不同的一些配置信息非常有用,例如一些数