На самом деле мне нужно открывать страницы с расширением, установленным в любом браузере (не конкретно в Chrome). Так что это может быть firefox или phantomjs (не уверен, возможно ли это вообще).
Итак, есть ли способ запустить chrome / firefox / phantom через webdriverio с предустановленным расширением, и если есть - как это сделать?
Заранее спасибо!
Да, есть! У вас может быть свойство chromeOptions
в желаемой способности. Этот объект имеет свойство с именем extensions
которое принимает строку base64 вашего файла crx
. Дополнительную информацию можно найти на https://sites.google.com/a/chromium.org/chromedriver/capabilities.
да, это работает
var data = await fs.readFileSync('./ext.zip');
options.desiredCapabilities.chromeOptions.extensions = [data.toString('base64')];
Привет! Спасибо, что поделились своим подходом!
@ d668 Может быть, у вас была похожая проблема, когда вы работали над добавлением расширения в свои тесты ??
Я попытался добавить расширение, и после запуска теста
У меня ошибка:
ERROR webdriver: Request failed due to unknown error: unknown error: cannot process extension #1 from unknown error: cannot read manifest
maxInstances: 5,
"goog:chromeOptions": {
extensions: [(function () {
try {
const webExt = fs.readFileSync('./extension.zip').toString('base64');
return webExt;
} catch (e) {
console.log(e, 'An error occurred while to parse extension zip file!');
}
})()],
args: ['--headless', '--disable-gpu']
},
@Madebyspeedster вам нужно упаковать расширение. Откройте chrome: // extensions и нажмите Упаковать расширение. Он сгенерирует пакет .crx и ключ .pem. После этого вы можете использовать ключ .pem для создания собственных пакетов. Вы можете использовать эту библиотеку для этого https://github.com/Constellation/crxmake
Самый полезный комментарий
да, это работает