网站搜索

自动化测试 - 在 TypeScript 中为 Shadow root 元素自定义 TestCafe 选择器


请帮助我在 TypeScript 中定义 Selector 部分

import { Selector, t } from 'testcafe'

fixture `Scenario Name : Validation`
    .page `https://chrisbateman.github.io/guide-to-web-components/demos/shadow-dom.htm`;


const demoPage  = Selector('#demo1');
const paragraph = Selector(() => {
    return demoPageSelector().shadowRoot.querySelectorAll('p');
}, { dependencies: { demoPageSelector: demoPage } });


test('Test ShadowDom', async t => {
    await t
        .expect(paragraph.value).eql('Some text');
});

答案#1

嗨,Debashish Samanta,

依赖项在运行时添加到函数的作用域中,因此 TypeScript 在编译期间无法找到它们。您可以使用 // @ts-ignore 注释来禁止此验证。

至于“类型为'{ dependencies: { demoPageSelector: Selector; }; }'的参数不可分配给'SelectorOptions'类型。”的错误,看起来在'SelectorOptions'类型声明中dependencies属性以某种方式缺失。你可以使用<SelectorOptions>类型断言来解决这个问题。

import { Selector, t } from 'testcafe'

fixture `Scenario Name : Validation`
    .page `https://chrisbateman.github.io/guide-to-web-components/demos/shadow-dom.htm`;


const demoPage  = Selector('#demo1');
const paragraph = Selector(() => {
    // @ts-ignore: Cannot find name 'demoPageSelector'.
    return demoPageSelector().shadowRoot.querySelectorAll('p');
}, <SelectorOptions> { dependencies: { demoPageSelector: demoPage } });


test('Test ShadowDom', async t => {
    await t
        .expect(paragraph.innerText).eql('These paragraphs are in a shadow root.');
});