使用 Nodejs Selenium Webdriver 实现无头自动化
Headless automation with 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') 是应该使导航静音的参数,但显然它不起作用或者我遗漏了一些我不知道的东西。
如果我有什么遗漏,请告诉我,因为我不知道我想做的事情是否可行,因为我是第一次使用这种技术。
谢谢。
试试这个:
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');
大约在 2018 年 2 月更新了答案。
引用 Selenium Webdriver NodeJS Examples (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 自 major version 59.0 2017 年 4 月
起可用
Headless Firefox 自 major version 56.02017 年 9 月
起可用
要在无头模式下启动 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
重新启用下载。
不幸的是,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();
相反。
我正在使用必须部署在 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') 是应该使导航静音的参数,但显然它不起作用或者我遗漏了一些我不知道的东西。
如果我有什么遗漏,请告诉我,因为我不知道我想做的事情是否可行,因为我是第一次使用这种技术。
谢谢。
试试这个:
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');
大约在 2018 年 2 月更新了答案。
引用 Selenium Webdriver NodeJS Examples (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 自 major version 59.0 2017 年 4 月
起可用Headless Firefox 自 major version 56.02017 年 9 月
起可用要在无头模式下启动 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
重新启用下载。
不幸的是,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();
相反。