Как добавить пользовательскую команду "щелкнуть" в файл wdio.conf.js в проекте автоматизации WebdriverIO с помощью тестера WDIO
В настоящее время у меня есть текущий проект автоматизации, над которым я работаю, и я хочу добавить пользовательские команды в этот проект автоматизации, чтобы мой код стал чище и эффективнее.
После поиска ресурсов в Интернете для решения моей проблемы я наткнулся на функцию addCommand, которая встроена в webDriverio. Однако, когда я попытался использовать эту функцию, я не смог добавить пользовательскую команду "щелкнуть", которая позволяла автоматизации ждать, пока элемент станет видимым, прежде чем выполнить действие щелчка по нему. Вот код, который у меня сейчас есть.
У меня есть этот код в настоящее время написано в моем хуке "before" в моем файле конфигурации wdio.conf.js.
browser.addCommand("click", function (selector) {
let result;
try {
if (!selector) {
// SOME CODE HERE TO WAIT FOR ELEMENT TO BE VISIBLE
// NOTHING SEEMS TO WORK
// this.waitForVisible() does not work
// browser.waitForVisible(this.element().selector.toString())
// does not work either
result = this.elementIdClick();
}
else {
browser.element(selector).waitForExist();
// if it is browser.click
browser.element(selector).waitForVisible();
result = browser.element(selector).click();
}
} catch (err) {
throw err;
}
return result;
}, true);
Я думаю, что проблема здесь связана с тем, что объект браузера выходит из области видимости внутри функции "addCommand", я не уверен.
Я следовал этому руководству и позаимствовал код оттуда. Пример кода оттуда работает нормально, но он не включает в себя ожидание, пока элемент не станет видимым / существует часть. Я немного изменил код, чтобы попытаться включить эту часть, но мне это не удалось.
Мне также любопытно, почему в учебнике код "this.elementIdClick(this.element(). Value.ELEMENT);" используется при простом выполнении this.element().click() или this.click() не будет работать. Если кто-нибудь может объяснить это мне, я был бы очень признателен!
ПРИМЕЧАНИЕ: я использую webdriverIO v4. Я знаю, что в v5 может быть какой-то обходной путь, но, поскольку я использую инфраструктуру cucumberJS, мне нужно придерживаться v4, пока не будет прекращена поддержка cucumberJS v5.
Любая помощь будет принята с благодарностью. Заранее спасибо!