如何使用WDIO测试运行器在WebdriverIO自动化项目的wdio.conf.js文件中添加自定义“单击”命令

时间:2019-04-16 05:26:27

标签: javascript node.js inheritance webdriver-io webdriver-io-v4

我目前有一个正在进行的自动化项目,我希望向该自动化项目中添加自定义命令,以使我的代码变得更简洁,更高效。

在网上寻找解决问题的资源后,我遇到了内置在webDriverio中的“ addCommand”功能。但是,当我尝试使用此功能时,无法添加自定义的“单击”命令,该命令不允许自动化程序先等待该元素变得可见,然后再对其执行单击操作。这是我当前拥有的代码。

我目前将此代码写在wdio.conf.js配置文件中的“ before”钩子中。

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”函数内部的范围。

我遵循了tutorial,并从那里借了代码。那里的示例代码可以正常工作,但是不包括等待元素可见/存在的部分。我对代码进行了一些修改以尝试包括该部分,但是这样做没有成功。

我也很好奇为什么在本教程中代码“ this.elementIdClick(this.element()。value.ELEMENT);”仅在执行“ this.element()。click()”时使用,否则this.click()无法正常工作。如果有人可以向我解释,将不胜感激!

注意:我正在使用webdriverIO v4。我知道在v5中可能会为此进行一些工作,但是由于我正在使用CucumingJS框架,因此必须坚持使用v4,直到对v5的CucumingJS支持消失为止。

任何帮助将不胜感激。预先感谢!

0 个答案:

没有答案