Javascript 木偶演员无效选择器
我试图在网页上用木偶演员填充表单,输入有一个id,我使用它作为选择器 ID是:Javascript 木偶演员无效选择器,javascript,css-selectors,puppeteer,headless-browser,Javascript,Css Selectors,Puppeteer,Headless Browser,我试图在网页上用木偶演员填充表单,输入有一个id,我使用它作为选择器 ID是: #loginPage:SiteTemplate:formulaire:login-field 当我从chrome获得选择器时,它会告诉我: #loginPage\3a SiteTemplate\3a formulaire\3a login-field 无论我在《木偶戏》中选择第一个还是第二个选项,它都会告诉我这个错误: Error: Evaluation failed: DOMException: Failed
#loginPage:SiteTemplate:formulaire:login-field
当我从chrome获得选择器时,它会告诉我:
#loginPage\3a SiteTemplate\3a formulaire\3a login-field
无论我在《木偶戏》中选择第一个还是第二个选项,它都会告诉我这个错误:
Error: Evaluation failed: DOMException: Failed to execute 'querySelector' on 'Document': '#loginPage:SiteTemplate:formulaire:login-field' is not a valid selector.
以下是代码(如果需要):
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('XXX');
await page.click(GOTO_LOGIN_BUTTON_SELECTOR)
await page.waitForNavigation({waitUntil: 'load'});
await page.waitFor(EMAIL_SELECTOR); // here
await page.focus(EMAIL_SELECTOR);
await page.keyboard.type(CREDS.email);
await page.focus(PASSWORD_SELECTOR);
await page.keyboard.type(CREDS.password);
await browser.close();
})();
对于这样的ID,一个选项是执行以下操作:
const EMAIL_SELECTOR = '[id="loginPage:SiteTemplate:formulaire:login-field"]';
或者,如果这不起作用,请按如下方式将其拆分,以解决:
:
const EMAIL_SELECTOR = '[id*="loginPage"][id*="SiteTemplate"][id*="formulaire"][id*="login-field"]';
希望其中一个(或两个)会有所帮助 我不确定,但我会删除行
wait page.waitForNavigation({waitUntil:'load'})代码>
并替换wait page.waitFor(电子邮件选择器);//此处
使用wait page.waitForSelector(电子邮件选择器)代码>
并测试是否仅使用#登录字段或其他#登录页面>SiteTemplate>formulaire>登录字段
我可能错了,因为我还在努力解决这个问题