【发布时间】:2022-08-19 04:28:43
【问题描述】:
我正在使用 puppeteer 并且在传递变量时遇到 waitForSelector 问题。但是,在传递字符串本身时它可以正常工作。
**// Not Working Code**
let subDomain = \'#yahya\\\\\\\\.infinitystudio\\\\\\\\.pk_lnkRemove\'
await page.waitForSelector(subDomain )
await Promise.all ([
page.waitForNavigation(),
page.click(subDomain)
])`
**// Working Code**
`
await page.waitForSelector(\'#yahya\\\\.infinitystudio\\\\.pk_lnkRemove\')
await Promise.all ([
page.waitForNavigation(),
page.click(\'#yahya\\\\.infinitystudio\\\\.pk_lnkRemove\')
])`
Any clue what is wrong in this.
-
你为什么在这个字符串中使用反斜杠?很明显,字符串变量与工作代码不同。
-
那是因为元素 id 有 . (句号)在里面。如果我不在工作代码中使用 \\\\,它根本不起作用。
-
但是为什么变量版本的斜杠数量要翻倍呢?
\\\\\\\\与\\\\不同。是否将其保存在变量中无关紧要。您已更改选择器。 -
当我只使用双 \\\\ 反斜杠时,输出字符串包含单,这很明显,因为它是一个转义序列字符。为了有 。在我的字符串中,我必须使用 \\\\ 并且为了在字符串中有 \\\\,我必须使用 \\\\\\\\.
-
下面是 chrome 控制台的输出。 console.log(\'my string contains \\.\') my string contains . console.log(\'我的字符串包含 \\\\.\') 我的字符串包含 \\. console.log(\'我的字符串包含 \\\\\\\\.\') 我的字符串包含 \\\\.
标签: javascript node.js puppeteer