如何启用从Selenium WebDriver登录的ChromeDriver

dob*_*ler 6 javascript selenium selenium-chromedriver selenium-webdriver

如何从Selenium Webdriver内部启用chromedriver详细日志记录功能?

我找到了适当的方法loggingToenableVerboseLogging但似乎无法正确地使用它们:

require('chromedriver');
const webdriver = require('selenium-webdriver');

let capabilities = webdriver.Capabilities.chrome();
capabilities.setScrollBehavior(1);
let builder = new webdriver.Builder().withCapabilities(capabilities);
builder.enableVerboseLogging(); // fails!!!
let driver = builder.build();
Run Code Online (Sandbox Code Playgroud)

Xia*_*ing 4

在chrome.js的注释中,有一种方法可以为 chromewebdriver 启用日志记录

 *
 * By default, every Chrome session will use a single driver service, which is
 * started the first time a {@link Driver} instance is created and terminated
 * when this process exits. The default service will inherit its environment
 * from the current process and direct all output to /dev/null. You may obtain
 * a handle to this default service using
 * {@link #getDefaultService getDefaultService()} and change its configuration
 * with {@link #setDefaultService setDefaultService()}.
 *
 * You may also create a {@link Driver} with its own driver service. This is
 * useful if you need to capture the server's log output for a specific session:
 *
 *     let chrome = require('selenium-webdriver/chrome');
 *
 *     let service = new chrome.ServiceBuilder()
 *         .loggingTo('/my/log/file.txt')
 *         .enableVerboseLogging()
 *         .build();
 *
 *     let options = new chrome.Options();
 *     // configure browser options ...
 *
 *     let driver = chrome.Driver.createSession(options, service);
 *
Run Code Online (Sandbox Code Playgroud)

您还有其他选择:

  • 将 ChromeDriver 作为独立进程运行

由于 ChromeDriver 实现了有线协议,因此它与任何 RemoteWebDriver 客户端完全兼容。--log-path只需使用参数和启动 ChromeDriver 可执行文件(作为服务器工作)--verbose,创建一个客户端,然后就可以了:

WebDriver driver = new RemoteWebDriver(
  "http://localhost:9515",
  DesiredCapabilities.chrome()
);
driver.get("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)