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

时间:2018-09-13 16:14:41

标签: python selenium firefox webdriver geckodriver

我是python的新手,我写了一个程序来为我收集信息(python + selenium + geckodriver + firefox),一切正常,但是geckodriver.exe生成了过多的日志,有时geckodriver.log的文件只有一个大小。甚至达到8GB。

我在银河,谷歌和stackoverflow上进行了搜索,找不到禁用geckodriver.log的解决方案,this question similar to mine,我知道使用某些参数可以减少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')

我尝试但失败了,有人可以帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

如果您参考 Firefox 选项对象文档,您可以看到 log 是此对象的一个​​属性

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.log

答案 1 :(得分:0)

我认为将您的 service_log_path='' 设置为空会关闭日志。我可能是错的,但我似乎没有日志文件,这就是我使用的设置。无论如何,我厌倦了打字...

browser = webdriver.Firefox(service_log_path='')

(我使用该设置是因为每次尝试指定 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):

这并没有解决我的问题,所以我在第 53 行进入同一文件夹中的文件 webdriver.py 并从...中删除了 geckodriver.log

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

和 bam 现在我不必再将 service_log_path 设置为空。但是,也许如果您将日志路径设置为 service_log_path="" ,它会解决您的问题。不确定这是否正是您要查找的内容,但它解决了我的问题。我似乎根本没有日志文件,更不用说 8GB 大小的了。