使用 Selenium Grid 时的 ChromeDriver 日志记录

ChromeDriver logging when using Selenium Grid

当 ChromeDriver 在 Windows 上的 Selenium Grid 上运行时,我想保存它的日志。我用这个命令启动节点就可以了

java -Dwebdriver.chrome.logfile=chromedriver.log -jar selenium-server-standalone.jar -role node -browser browserName=chrome

但问题是每次启动 ChromeDriver 的新实例时,它都会覆盖 chromedriver.log。

我尝试使用 chromedriver%time::=.%.logchromedriver%%time::=.%%.log 作为文件名来添加时间并避免覆盖。它在我手动启动 ChromeDriver 时有效,但在它由 Grid 节点启动时无效。

我也尝试在我的 Selenium 测试的 Java 代码中这样做,但我只找到了本地 Selenium 而不是 Grid 的解决方案:

ChromeDriverService serv = new ChromeDriverService.Builder().usingAnyFreePort().withLogFile(
    new File("chromedriver" + System.currentTimeMillis() + ".log")).build();
WebDriver driver = new ChromeDriver(serv);

为了在 selenium 网格中获取驱动程序日志,最好的方法应该是使用 selenium-log api。您不必关心 node/browser 您的测试是 运行,api 负责。

首先你告诉驱动程序记录什么级别:

LoggingPreferences logPref = new LoggingPreferences(); 
logPref.enable(LogType.DRIVER, Level.ALL); 
capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPref);

比起像这样获取日志条目:

driver.manage().logs().get(LogType.DRIVER).getAll()

您可以在其中找到您的会话的所有日志条目。

快乐testing/coding.