Как добавить пользовательскую команду "щелкнуть" в файл 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.

Любая помощь будет принята с благодарностью. Заранее спасибо!

0 ответов

Другие вопросы по тегам