我正在使用 "selenium-webdriver": "4.0.0-alpha.7" 和 javascript。當我嘗試在 .withCapabilities 中無頭地運行我的測驗用例時。測驗只在 chrome 瀏覽器上運行,而不是無頭的。
我有一個看起來像這樣的 config.js 檔案
// filename: lib/config.js
module.exports = {
baseUrl: process.env.BASE_URL || 'https://www.mycompanyURL.com',
host: process.env.HOST || 'headless',
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"chromeOptions": {
"args": ['--headless'],
},
},
localhost: {
"browserName": process.env.BROWSER_NAME || 'chrome'
}
}
我有一個看起來像這樣的 driveFactory.js
// filename: DriverFactory.js
const path = require('path')
const { Builder } = require('selenium-webdriver')
class DriverFactory {
constructor(config) {
this.config = config
}
_configure() {
let builder = new Builder()
switch (this.config.host) {
case 'localhost':
builder.withCapabilities(this.config.localhost)
break
case 'headless':
builder.withCapabilities(this.config.headless).
break
}
return builder
}
}
module.exports = DriverFactory
有誰知道為什么沒有在能力中設定無頭論點?
uj5u.com熱心網友回復:
從 Selenium 4(以及 IIRC,Selenium 3 系列的一些較新版本)開始,供應商特定的引數已根據 WebDriver Spec進行命名空間。
現在需要將引數提供給goog命名空間下的驅動程式,例如goog:chromeOptions.
一個選項
您可以使用以下內容替換您的配置:
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"goog:chromeOptions": {
"args": ['--headless'],
},
},
一個更好的主意
該selenium-webdriver庫具有用于將 Chrome(和 Chromium,就此而言)設定為無頭模式的內置選項。以這種方式做事意味著您不必跟蹤所需的引數值,并且 IMO 更干凈一些。
只需更新您的驅動程式工廠:
case "headless":
builder.withCapabilities(this.config.headless)
.setChromeOptions(new chrome.Options().headless());
break;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482284.html
標籤:javascript 硒 谷歌浏览器无头
上一篇:"訊息:沒有這樣的元素:無法找到元素:{"method":"xpath","selector":"//button[no
下一篇:如何僅從9gag抓取圖片帖子
