我想要获取所有<custom-tag>
个 node 的属性以及类型<custom-text>
或类型<custom-number>
的子 node 的innerText
DevTools中的一个简化版本是
const headersMap = new Map();
var headers = Object.create(null);
document.querySelectorAll("h2").forEach(el => {
headers[el.id] = el.innerText
headersMap.set(el.id, el.innerText)
});
console.log("h2 count > 2 === " , (headersMap.size>2))
console.table(Array.from(headersMap, ([name, value]) => ({ name, value })));
对于API testing page人,它看起来是这样的
这是我的剧作家try
test('API Testing - H2 count greater than 2', async ({ }) => {
await test.step('API Testing - get titles', async() => {
await page.goto('https://playwright.dev/docs/api-testing');
const headersList = await page.locator('h2');
var headersMap = await headersList.evaluateAll(node => {
const headersMap = new Map();
var headers = Object.create(null);
headers[node.id] = node.innerText
headersMap.set(node.id, node.innerText)
return headersMap;
});
await expect(headersMap.size).toBeGreaterThan(2);
page.pause();
});
});
但它报告说:
Error: expect(received).toBeGreaterThan(expected)
Matcher error: received value must be a number or bigint
Received has value: undefined
47 | return headersMap;
48 | });
> 49 | await expect(headersMap.size).toBeGreaterThan(2);
| ^
50 | page.pause();
问题
- 我如何创建一个对象,用forEach填充它并返回它?
- 必须进行哪些更改才能使
my_locator.evaluateAll()
返回 map ?