gpt4 book ai didi

jestjs - Puppeteer - checkbox.checked 未定义 - 为什么?

转载 作者:行者123 更新时间:2023-12-04 09:57:45 34 4
gpt4 key购买 nike

我正在使用 puppeteer 和 jest 来测试前端的一些东西,但我遇到了一个小问题 - 我认为我缺少一些概念。

test("Assert that when checkbox isn't checked, dropdown menu is visible", async () => {
let checkbox = await page.$('input[ng-model="user.managed.timezone"]');
console.log("Checking if checkbox checked");
console.log("CHECKED: ", checkbox.checked);
});

根据 puppeteer 文档,page.$ 运行 document.querySelector。当我在浏览器上运行以下命令时,我得到了我想要的:

let m = document.querySelector('input[ng-model="user.managed.timezone"]')
console.log(m.checked) // results in true or false

但 Jest 中的代码导致 CHECKED: undefined

为什么会这样 --> 我缺少什么概念?

最佳答案

您正在尝试读取值 ElementHandle ,和纯JS Element不一样.

您必须使用此语法才能获得 checked值(value):

await (await checkbox.getProperty('checked')).jsonValue()

这是工作示例:

const puppeteer = require('puppeteer');

const html = `
<html>
<body>
<input ng-model="user.managed.timezone" type="checkbox" />
</body>
</html>`;

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(`data:text/html,${html}`);

const checkbox = await page.$('input[ng-model="user.managed.timezone"]');

console.log(await (await checkbox.getProperty('checked')).jsonValue());
await checkbox.click();
console.log(await (await checkbox.getProperty('checked')).jsonValue());

await browser.close();
})();

关于jestjs - Puppeteer - checkbox.checked 未定义 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49430346/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com