【问题标题】:WebdriverIO typescript cannot find name $(dollar sign)WebdriverIO 打字稿找不到名称 $(美元符号)
【发布时间】:2017-10-16 03:50:27
【问题描述】:

我正在使用 webdriverio 和 mocha 编写 e2e 测试,我正在使用 typescript 进行编码

但是,当我编译时,由于 browser.execute 的美元符号 $ 而出现一堆错误

代码示例:

injetarTextoPropriedade(seletor) {
    browser.execute(function () {
        $(seletor).each(function () {
            var $this = $(this);
            $this.attr("conteudo", $this.text().trim());
        });
    });
}

然后,当我编译时,我收到以下错误:

src/pages/page.ts(42,4): error TS2304: Cannot find name '$'.

有人知道怎么解决吗?

【问题讨论】:

  • $() jquery?你需要npm i -D @types/jquery

标签: typescript e2e-testing webdriver-io


【解决方案1】:

如果您使用的是 WebdriverIO,则无需安装 jQuery 类型即可在 TypeScript 中正确编译 $。

这些函数在主 webdriverIO 模块中声明: node_modules/@wdio/sync/webdriverio.d.ts:

(这是文件末尾的样子,仅供参考):

/**
 * find a single element on the page.
 */
declare function $(selector: string | Function): WebdriverIO.Element;

/**
 * find multiple elements on the page.
 */
declare function $$(selector: string | Function): WebdriverIO.ElementArray;

declare module "@wdio/sync" {
    export = WebdriverIO
}

如果您使用@wdio/sync(或异步,在这里没有任何区别),请确保您在 package.json 中的依赖项中有正确的版本,并尝试使用简单的 npm i 或纱线,无论你使用哪个。

如果错误仍然存​​在,您可能在设置过程中犯了一些错误。 尝试从这里检查所有步骤:https://webdriver.io/docs/typescript

【讨论】:

    【解决方案2】:

    虽然 OP 接受了答案,但我觉得其他人(比如我自己)可能正在寻找另一个类似的问题。

    如果 webdriverio $ 而不是 JQuery $ 发生错误 Cannot find name '$',则可以通过全局声明 $ 来解决。

    添加一个文件并将其命名为global.d.tsdeclare const $, $$;

    虽然不漂亮,如果你有更好的方法,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 2016-09-15
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 2017-06-18
      • 2018-11-28
      相关资源
      最近更新 更多