如果页面具有两个相同的格式,如何访问第二个输入元素?

时间:2019-04-29 07:44:46

标签: javascript puppeteer

我正在尝试使用puppeteer自动执行表单填充过程。一页上有两种形式,它们几乎是相同的,即使它们的父类是相同的。

我成功填写了第一份表格。但是我不知道如何填写第二个表单,该表单具有完全相同的输入字段,例如username和all。

如何区分这两种形式并准确访问我想要的输入字段。

为便于参考,我在这里共享了一些代码。

await page.click('input[name="fullName"]');
await page.keyboard.type("Nitin");

像上面一样,我成功填写了第一个包含用户名字段的表单。 现在,第二种形式也具有相同的用户名字段。现在我该如何填补那个?

谢谢。

2 个答案:

答案 0 :(得分:0)

在搜索元素之前,可以使用page.$$()page.evaluate()循环浏览表单。

答案 1 :(得分:0)

最简单的方法是首先通过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.$,您可以查询另一个元素中的一个元素。