运行 Selenium geckodriver 不生成 geckodriver 日志文件

Running Selenium geckodriver without generating geckodriver log files

我有一些Robot Framework test suites that use the SeleniumLibrary。我 运行 使用 Firefox 和 geckodriver 进行了这些测试。每当我 运行 我的测试套件时,都会创建一个 geckodriver-*.log 文件。

例如,在我 运行 我的测试套件之前,我只有我的 .robot 文件:

$ ls
example.robot

然后我运行机器人,生成了geckodriver日志文件:

$ robot --output NONE --log NONE --report NONE example.robot 
<output of running test suite>
$ ls
example.robot  geckodriver-1.log

如果我重新运行 测试套件,则会创建一个 geckodriver-2.log 文件,并且 运行 第三次使用该套件会生成一个 geckodriver-3.log 文件,依此类推上。

如何在不创建任何 geckodriver 日志文件的情况下 运行 我的测试套件?

我知道这一定是可能的,因为它可以通过将 service_log_path 设置为 /dev/null 在常规 python(没有机器人)中完成,如下所示:

from selenium import webdriver
import shutil

driver = webdriver.Firefox(
    executable_path=shutil.which('geckodriver'),
    service_log_path='/dev/null'
)
driver.get('https://whosebug.com/')
driver.quit()

我的 *.robot 文件,用于最小的可重现示例

*** Settings ***
Library     SeleniumLibrary    run_on_failure=None

*** Test Cases ***
Example Test Case
    Open Browser    https://whosebug.com/    Firefox
    Close Browser

版本和OS信息

解决方法是将Open Browser关键字的service_log_path参数设置为os.path.devnull,如下:

*** Settings ***
Library     SeleniumLibrary    run_on_failure=None

*** Test Cases ***
Example Test Case
    Open Browser    https://whosebug.com/    Firefox    service_log_path=${{os.path.devnull}}
    Close Browser

然后 geckodriver 将记录到 os.path.devnull 而不是当前工作目录中的文件。

注意:本示例使用inline python evaluation,Robot Framework 3.2 中的一项新功能。