【问题标题】:testcafe selector does not find 'div' elementstestcafe 选择器找不到“div”元素
【发布时间】:2021-01-18 15:52:49
【问题描述】:

我在使用 testcafe 时遇到了一个非常奇怪的错误。在我的一个网站上,我无法选择 div 元素,但我仍然可以选择其他元素。所以

await t.click(Selector("span").withAttribute('id', 'foo'));
await t.click(Selector("p").withAttribute('id', 'foo'));
await t.click(Selector("button").withAttribute('id', 'foo'));
await t.click(Selector("input").withAttribute('id', 'foo'));

工作正常

await t.click(Selector("div").withAttribute('id', 'foo'));

会抛出以下错误:

指定选择器的函数只能返回一个 DOM 节点,一个 节点数组、NodeList、HTMLCollection、null 或未定义。利用 ClientFunction 返回其他值。

这只发生在我的一个特定网站上。这可能是什么?我可以在我的脚本中做些什么来禁止 testcafe 选择器获取“div”元素?现在真的没有想法。

【问题讨论】:

  • 这个Selector("div").withAttribute('id', 'foo') 是否存在于您的网站上?似乎在类似情况下存在错误,但该元素在网站上不存在:github.com/DevExpress/testcafe/issues/1240
  • 是的,选择器肯定存在于我的网站上。我不知道为什么会收到此错误。

标签: javascript node.js reactjs css-selectors testcafe


【解决方案1】:

如果您将返回值不正确的函数作为 Selector 参数传递,则可能会出现此问题:

test('Return non-DOM node', async () => {
    await Selector(() => 'hey')();
});

但是,如果您使用字符串作为参数来指定选择器,则不会发生错误。请检查您是否没有将函数传递给您的 Selector 对象。

如果您的选择器定义正确但问题仍然存在,请分享示例(html 页面或您网站的公共 url)和您的完整测试代码以演示该问题。

【讨论】:

  • 我没有传递函数,我使用的是上面显示的基本注释。不幸的是,该页面仍然是机密的,所以我不能给你看。您还有其他猜测可能是什么问题吗?它必须与用于该特定项目的代码有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多