无法获取有关节点的信息,因为指定的选择器与 DOM 树中的任何节点都不匹配
Cannot obtain information about the node because the specified selector does not match any node in the DOM tree
我是第一次使用 testCafe,我正在尝试编写一个测试,在显示的患者列表中单击特定患者的姓名。
我得到的错误如下:
Cannot obtain information about the node because the specified
selector does not match any node in the DOM tree.
| Selector('[data-cy=Name]')
这是实际的代码块:
test
.meta({
code: '4.1',
action: 'From Patient Summaries screen, click a patient name'.
expected: 'Should take user to the weekly Patient Overview screen'
})
.page(url)
('4.1', async t => {
await LoginPageObject.loginAsDoctor();
const patients = Selector('[data-cy=Patients]');
const settingsMenuItem = Selector('[data-cy=name]');
await t.expect(patients.visible).ok().click(patients);
await t.expect(Selector('[data-cy=table-row-0]').visible).ok()
await t.expect(settingsMenuItem.textContent)
.contains("Charles Shetland")
.click(settingsMenuItem);
await VnVScreenshot(t, '4.1', fixtureName);
});
我试过 const settingsMenuItem = Selector('td [data-cy=Name]');
和 .contains("Shetland,Charles")
,因为从技术上讲,这就是名称的列出方式。
但我仍然遇到 Selector('td [data-cy=Name]')
的相同错误。
DOM 层次结构的外观是:
div
table
thead
tbody
tr
td
没有样品很难确定错误的确切原因。但是,我在以下几行中发现了不正确的代码:
await t.expect(settingsMenuItem.textContent)
.contains("Charles Shetland")
.click(settingsMenuItem);
如果要点击指定文本的项目,需要使用withText
方法:
https://testcafe.io/documentation/402740/reference/test-api/selector/withtext
await t.click(settingsMenuItem.withText('Charles Shetland'))
如果这没有帮助,请准备一个演示问题的示例。
请注意,您可以使用 TestCafe 实验调试功能在 IDE 或 chrome nodejs 控制台中执行选择器。详情请参考以下文章:
https://testcafe.io/documentation/402639/reference/command-line-interface#--experimental-debug
所以我能够解决它的方法是使用一些 testCafe 魔法。
我所做的是将 data-cy="Name"
更改为 data-cy="call_Shetland Charles"
。
起初我不确定,但这让我可以从这里开始:
const settingsMenuItem = Selector('[data-cy=Name]');
为此:
const settingsMenuItem = Selector('[data-cy*=Charles]');
而且 testCafe 能够识别我希望它点击的患者。
我是第一次使用 testCafe,我正在尝试编写一个测试,在显示的患者列表中单击特定患者的姓名。
我得到的错误如下:
Cannot obtain information about the node because the specified selector does not match any node in the DOM tree.
| Selector('[data-cy=Name]')
这是实际的代码块:
test
.meta({
code: '4.1',
action: 'From Patient Summaries screen, click a patient name'.
expected: 'Should take user to the weekly Patient Overview screen'
})
.page(url)
('4.1', async t => {
await LoginPageObject.loginAsDoctor();
const patients = Selector('[data-cy=Patients]');
const settingsMenuItem = Selector('[data-cy=name]');
await t.expect(patients.visible).ok().click(patients);
await t.expect(Selector('[data-cy=table-row-0]').visible).ok()
await t.expect(settingsMenuItem.textContent)
.contains("Charles Shetland")
.click(settingsMenuItem);
await VnVScreenshot(t, '4.1', fixtureName);
});
我试过 const settingsMenuItem = Selector('td [data-cy=Name]');
和 .contains("Shetland,Charles")
,因为从技术上讲,这就是名称的列出方式。
但我仍然遇到 Selector('td [data-cy=Name]')
的相同错误。
DOM 层次结构的外观是:
div
table
thead
tbody
tr
td
没有样品很难确定错误的确切原因。但是,我在以下几行中发现了不正确的代码:
await t.expect(settingsMenuItem.textContent)
.contains("Charles Shetland")
.click(settingsMenuItem);
如果要点击指定文本的项目,需要使用withText
方法:
https://testcafe.io/documentation/402740/reference/test-api/selector/withtext
await t.click(settingsMenuItem.withText('Charles Shetland'))
如果这没有帮助,请准备一个演示问题的示例。
请注意,您可以使用 TestCafe 实验调试功能在 IDE 或 chrome nodejs 控制台中执行选择器。详情请参考以下文章: https://testcafe.io/documentation/402639/reference/command-line-interface#--experimental-debug
所以我能够解决它的方法是使用一些 testCafe 魔法。
我所做的是将 data-cy="Name"
更改为 data-cy="call_Shetland Charles"
。
起初我不确定,但这让我可以从这里开始:
const settingsMenuItem = Selector('[data-cy=Name]');
为此:
const settingsMenuItem = Selector('[data-cy*=Charles]');
而且 testCafe 能够识别我希望它点击的患者。