У меня есть веб-страница, функциональность которой изменяется, когда настраиваемый заголовок «headerKey»: «headervalue» устанавливается через расширение Chrome. Хотя я могу сделать это вручную, я хочу сделать это через код, чтобы автоматизировать тестирование.
Примечание:-
Помогите с подходами.
В веб-драйвере нет функций для выполнения этой операции. Я использовал modheader, но он не работает.
getModHeaderExtension() {
const filename = path.join(__dirname, "Modify.crx");
console.info(filename);
const stream = fs.readFileSync(filename);
return new Buffer(stream).toString('base64');
}
Мне удалось найти решение для передачи пользовательского заголовка при открытии моей веб-страницы. Я использую службу ChromeDevTools, которая поддерживается webdriverio v5, используя свой метод
browser.cdp(domain, command, parameters);
Для домена, команды и параметров, пожалуйста, посетите протокол devtools ниже: -
Я знаю, что прошло некоторое время с тех пор, как вопрос был добавлен, хотя мне потребовалось некоторое время, чтобы понять это самостоятельно, поэтому, возможно, кто-то им воспользуется.
@wdio/devtools-service
в свои зависимости для разработчиков (у нее должна быть та же основная версия, что и у других ваших @wdio
библиотек, иначе у вас могут возникнуть проблемы)devtools
к услугам в wdio.conf.ts
:export const config = {
[...]
services: ['chromedriver', 'devtools']
[...]
}
const encodedCredentials = base64.encode(`${appConfig.basicAuthDevUser.userName}:${appConfig.basicAuthDevUser.password}`);
browser.cdp('Network', 'setExtraHTTPHeaders', {
headers: {
Authorization: `Basic ${encodedCredentials}`,
},
});
Подробнее об использовании devtools с wdio: https://webdriver.io/docs/devtools-service/
Подробнее о конкретных возможностях Chrome: https://chromedevtools.github.io/devtools-protocol/tot/Network/