WebdriverIO打字稿找不到名字$(美元符号)

时间:2017-05-16 21:39:54

标签: typescript e2e-testing webdriver-io

我正在使用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 '$'.

有谁知道如何修复它?

3 个答案:

答案 0 :(得分:3)

如果您使用 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 或 yarn,无论您使用哪个。

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

答案 1 :(得分:1)

你需要安装jQuery的类型:

npm install --save-dev @types/jquery

在ts文件中导入jQuery,如:

import * as $ from "jquery";

还要确保已经安装了jQuery。否则,这将在运行时失败:

npm install --save jquery

答案 2 :(得分:0)

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

如果您为webdriverio Cannot find name '$'而非JQuery $发生错误$,则可以通过全局声明$来解决此问题。

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

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