Как добавить пользовательскую команду «щелкнуть» в файл wdio.conf.js в проекте автоматизации WebdriverIO с помощью тестового запуска WDIO - PullRequest
0 голосов
/ 16 апреля 2019

В настоящее время у меня есть текущий проект автоматизации, над которым я работаю, и я хочу добавить пользовательские команды в этот проект автоматизации, чтобы мой код стал чище и эффективнее.

После поиска ресурсов в Интернете для решения моей проблемы я наткнулся на функцию "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, пока не будет прекращена поддержка v5 cucumberJS.

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

...