使用Puppeteer选择名称中带点或句点的节点

时间:2018-10-05 13:08:14

标签: css-selectors puppeteer

我们有一个这样的表单,其中包含许多元素,唯一的唯一标识符是name属性,该属性始终是company.something表单。

<input class="form-control" type="text" name="company.name" value="">

以下两次尝试选择此文本输入的尝试均失败

await page_c.click('input[name=company.name]')
await page_c.type('input[name=company.name]', client.companyName)

await page_c.click('input[name=company\.name]')
await page_c.type('input[name=company\.name]', client.companyName)

出现以下错误

Evaluation failed: DOMException: Failed to execute 'querySelector' on 'Document': 'input[name=company.name]' is not a valid selector.

有没有一种方法可以处理name属性中包含点或句号的元素,而无需重写前端?谢谢。

2 个答案:

答案 0 :(得分:1)

因为这是在属性选择器中,所以您无需满足两次转义的要求,因为引用属性值是不太容易出错的解决方案:

await page_c.click('input[name="company.name"]')
await page_c.type('input[name="company.name"]', client.companyName)

答案 1 :(得分:0)

搜索错误消息后,我发现Cannot use query selector with id's that includes "."双重转义有效。

await page_c.click('input[name=company\\.name]')
await page_c.type('input[name=company\\.name]', client.companyName)