web-dev-qa-db-ja.com

Nodejs Selenium Webdriverによるヘッドレスオートメーション

私はubuntuサーバー内にデプロイする必要がある自動化ツールを使用しています。私の疑問は、Selenium Webdriverでchromeをサイレントで使用できるかどうかです。

これまでに次のコードを試しましたが、ブラウザが開いたままです(Windows 10でテストを行っています)。

    var webdriver = require('Selenium-webdriver'),
        chrome    = require('Selenium-webdriver/chrome')
        By        = webdriver.By,
        until     = webdriver.until,
        options   = new chrome.Options();
        options.addArguments('--headless');
    var path = require('chromedriver').path;
    var service = new chrome.ServiceBuilder(path).build();
        chrome.setDefaultService(service);
    var driver = new webdriver.Builder().forBrowser('chrome').withCapabilities(options.toCapabilities()).build();

driver.get('https://www.google.com');

AddArguments( '-headless')は、ナビゲーションをサイレントにするパラメーターですが、動作していないか、気付いていないものが欠けていることに注意してください。

何か足りないことがあったら、やりたいことができるのかわからないので教えてください。この種の技術を使うのは初めてなので。

ありがとう。

13
avilac

2018年2月頃に回答を更新しました。

Selenium Webdriver NodeJSの例の参照(commit 5bf50c4

const chrome = require('Selenium-webdriver/chrome');
const firefox = require('Selenium-webdriver/firefox');
const {Builder, By, Key, until} = require('Selenium-webdriver');

const screen = {
  width: 640,
  height: 480
};

let driver = new Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().headless().windowSize(screen))
    .setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
    .build();

ヘッドレスChrome利用可能 メジャーバージョン59.0 APR-2017

ヘッドレスFirefoxは メジャーバージョン56.0 SEP-2017以降で利用可能

16
Josh Peak

これを試してください:

var webdriver = require('Selenium-webdriver'),
    chrome    = require('Selenium-webdriver/chrome')
    By        = webdriver.By,
    until     = webdriver.until,
    options   = new chrome.Options();
    options.addArguments('headless'); // note: without dashes
    options.addArguments('disable-gpu')
var path = require('chromedriver').path;
var service = new chrome.ServiceBuilder(path).build();
    chrome.setDefaultService(service);
var driver = new webdriver.Builder()
    .forBrowser('chrome')
    .withCapabilities(webdriver.Capabilities.chrome()) 
    .setChromeOptions(options)                         // note this
    .build();

driver.get('https://www.google.com');
4
Matti Lehtinen

残念ながらheadless()メソッドはWebdriver JSにはもう存在しません。

使用する

const seleniumWebdriver = require('Selenium-webdriver');
const chrome = require('Selenium-webdriver/chrome');

var driver = new Builder().forBrowser('chrome')
            .setChromeOptions(new chrome.Options().addArguments('--headless'))
            .build();

代わりに。

1
cyluxx

ヘッドレスモードでChrome=を開始するには、Options.headless()を呼び出します。ヘッドレスモードで開始すると、現在GPUアクセラレーションも無効になります。これはコードです。

  var seleniumWebdriver = require('Selenium-webdriver');
  var chrome    = require('Selenium-webdriver/chrome');

  var options   = new chrome.Options().headless();

  var driver = new seleniumWebdriver.Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

注:セキュリティのため、Chromeヘッドレスモードの場合、デフォルトでダウンロードを無効にします。ダウンロードを再度有効にするには、setDownloadPathを呼び出すことができます。

0
Jai Prak