我正在使用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 '$'.
有谁知道如何修复它?
答案 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.ts
和declare const $, $$;
虽然不是很漂亮,但如果你有更好的方法,请告诉我。