如果页面有两个相同的表单,如何访问第二个输入元素?
How to access second input element if page has two identical forms?
我正在尝试使用 puppeteer 自动化表单填写过程。在一个页面上,有两个非常相似的表单,甚至它们的父 类 都相同。
我成功填写了第一份表格。但是我不知道如何填写第二个表单,它的用户名和所有输入字段完全相同。
如何区分这两种形式并准确访问我想要的输入字段。
为了您的参考,我在这里分享了我的一些代码。
await page.click('input[name="fullName"]');
await page.keyboard.type("Nitin");
像上面一样,我成功填写了第一个有用户名字段的表格。
现在有第二种形式也有相同的用户名字段。现在我该如何填写那个?
提前致谢。
您可以使用 page.$$()
or page.evaluate(
) 在搜索元素之前循环浏览表单。
最简单的方法是先通过page.$$
获取两种形式的元素句柄,然后使用另一个查询来查询其子元素。
例子
const forms = await page.$$('form'); // array contains the form element handles
const elementInForm1 = await forms[0].$('input[name="fullName"]');
await elementInForm1.click();
// ...
const elementInForm2 = await forms[1].$('input[name="fullName"]');
await elementInForm2.click();
// ...
变量 forms
包含页面内的所有 form
元素。通过使用 elementHandle.$
,您可以在另一个元素中查询一个元素。
我正在尝试使用 puppeteer 自动化表单填写过程。在一个页面上,有两个非常相似的表单,甚至它们的父 类 都相同。
我成功填写了第一份表格。但是我不知道如何填写第二个表单,它的用户名和所有输入字段完全相同。
如何区分这两种形式并准确访问我想要的输入字段。
为了您的参考,我在这里分享了我的一些代码。
await page.click('input[name="fullName"]');
await page.keyboard.type("Nitin");
像上面一样,我成功填写了第一个有用户名字段的表格。 现在有第二种形式也有相同的用户名字段。现在我该如何填写那个?
提前致谢。
您可以使用 page.$$()
or page.evaluate(
) 在搜索元素之前循环浏览表单。
最简单的方法是先通过page.$$
获取两种形式的元素句柄,然后使用另一个查询来查询其子元素。
例子
const forms = await page.$$('form'); // array contains the form element handles
const elementInForm1 = await forms[0].$('input[name="fullName"]');
await elementInForm1.click();
// ...
const elementInForm2 = await forms[1].$('input[name="fullName"]');
await elementInForm2.click();
// ...
变量 forms
包含页面内的所有 form
元素。通过使用 elementHandle.$
,您可以在另一个元素中查询一个元素。