11

我正在尝试禁用 chrome 控制台的输出。如果我通过 --start-maximized 选项它工作正常。我可能有错误的命令?

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--silent"));
chrome = new ChromeDriver(_chromeservice,capabilities);

我也试过

 ChromeOptions options = new ChromeOptions();
 options.addArguments("silent");
 chrome = new ChromeDriver(options);

输出

已启动 ChromeDriver 端口=26703 版本=23.0.1240.0 日志=/Brett/workspace/TestNG/chromedriver.log [1214/161331:ERROR:ipc_sync_channel.cc(378)] 取消挂起的发送 [1214/161331:ERROR:ipc_sync_channel.cc( 378)] 取消挂起的发送 [1214/161331:ERROR:ipc_sync_channel.cc(378)] 取消挂起的发送块引用

4

4 回答 4

10

在这个Chromedriver 票证(关于silent选项)的提示下,我查看了 的来源ChromeDriverService.java,并找到了对"webdriver.chrome.logfile".

添加-Dwebdriver.chrome.logfile="/dev/null"到我的java命令后,日志再次变得可读:无用的 ChromeDriver 日志消失了,而System.out.println调用和异常仍然显示在控制台中。

我从java以下参数开始(Linux / Mac):

DIR=path/to/dir/containing/selenium/and/stuff
cd "$DIR" && java -cp "$DIR\
:$DIR/output\
:$DIR/bin/selenium-server-standalone-2.33.0.jar" \
-Dwebdriver.chrome.driver="$DIR/bin/chromedriver" \
-Dwebdriver.chrome.args="--disable-logging" \
-Dwebdriver.chrome.logfile="/dev/null" \
AllTests

如果您使用的是 Windows:

set DIR=path\to\dir\containing\selenium\and\stuff
cd "%DIR%" && java -cp "%DIR%;%DIR%\output;%DIR%\bin\selenium-server-standalone-2.33.0.jar" ^
-Dwebdriver.chrome.driver="%DIR%\bin\chromedriver.exe" ^
-Dwebdriver.chrome.args="--disable-logging" ^
-Dwebdriver.chrome.logfile=NUL ^
AllTests

我的类路径 ( -cp) 的组成说明:我的测试位于“$DIR/output”的目录中。Selenium jar 文件放在“$DIR/bin/selenium-server-standalone-2.33.0.jar”中。“AllTests”是我的班级名称,其中包含public static void main(String[] args)- 这会启动我的测试。

其他参数不言自明,请根据需要进行调整。为方便起见(在 shell/批处理脚本中使用),我在变量中声明了公共目录DIR

于 2013-06-09T22:41:38.990 回答
3

当我设置 chrome 时

  selenium-chrome-driver-2.48.2.jar
  chromedriver 2.20
  selenium-java-2.48.2.jar

以上答案都不适合我,因为我看到一些答案已经有几年了,所以我会发布对我有用的答案。

    ChromeOptions chromeOptions = setupChromeOptions();
    System.setProperty("webdriver.chrome.logfile", "\\path\\chromedriver.log");
    System.setProperty("webdriver.chrome.driver", "\\path\\chromedriver.exe");
    System.setProperty("webdriver.chrome.args", "--disable-logging");
    System.setProperty("webdriver.chrome.silentOutput", "true");
    driver = new ChromeDriver(chromeOptions);
于 2015-12-29T21:30:55.433 回答
2

请尝试“ --disable-logging”。

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--disable-logging"));
chrome = new ChromeDriver(_chromeservice,capabilities);
于 2013-01-21T08:05:46.460 回答
0

至少从 Selenium 3 开始,您可以使用 ChromeDriverService 及其内部类 Builder 来以静默模式启动驱动程序。

一个oneliner:

new ChromeDriver(new ChromeDriverService.Builder().withSilent(true).build());

构造函数是直截了当的,您创建一个新的服务构建器,将静默设置为 true(这是关键部分),最后将其构建到 ChromeDriver 的构造函数所需的 ChromeDriverService 中。

于 2016-08-01T18:28:55.760 回答