Ich arbeite mit einem Automatisierungstool, das in einem Ubuntu-Server implementiert werden muss. Ich frage mich, ob es möglich ist, Chrome mit dem Selenium Webdriver leise zu verwenden.
Ich habe den folgenden Code bisher ausprobiert, der Browser wird jedoch weiterhin geöffnet (ich mache die Tests in 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');
Beachten Sie, dass addArguments ('- headless') der Parameter ist, der die Navigation stummschalten soll, aber anscheinend funktioniert sie nicht oder ich vermisse etwas, das mir nicht bewusst ist.
Wenn etwas fehlt, was ich vermisse, sagen Sie mir bitte, denn ich weiß nicht, ob das möglich ist, da ich zum ersten Mal mit dieser Art von Technologie arbeite.
Vielen Dank.
Antwort aktualisiert ca. FEB-2018.
Referenzieren der Selenium Webdriver NodeJS-Beispiele (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();
Headless Chrome verfügbar seit Hauptversion 59.0 APR-2017
Headless Firefox verfügbar seit Hauptversion 56.0 SEP-2017
Probier diese:
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');
Leider existiert die Methode headless () in Webdriver JS nicht mehr.
Benutzen
const seleniumWebdriver = require('Selenium-webdriver');
const chrome = require('Selenium-webdriver/chrome');
var driver = new Builder().forBrowser('chrome')
.setChromeOptions(new chrome.Options().addArguments('--headless'))
.build();
stattdessen.
Um Chrome im Headless-Modus zu starten, rufen Sie einfach Options.headless()
auf. Beim Start im Headless-Modus wird derzeit auch die GPU-Beschleunigung deaktiviert. Dies ist der Code:
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();
Hinweis: Aus Sicherheitsgründen deaktiviert Chrome standardmäßig Downloads im Headless-Modus. Sie können setDownloadPath
aufrufen, um Downloads erneut zu aktivieren.