我正在尝试使用Puppeteer和Chromium在Chrome中自动执行某些功能。我可以登录,选择主导航元素,然后出现子导航菜单。我目前正在控制台中寻找正确的选择器以传递给Puppeteer,但是,我遇到了困难。
以下HTML:
<div id="popupTaskMenu" class="launcher...">
<div -not important to task></div>
<nav class="task_launcher_item_heading">
<div task-item="0" class="task_launcher_item_click">Text</div>
<div task-item="1" class="task_launcher_item">Text</div>
</nav>
<div>
在Chrome控制台中,我可以通过使用<nav>
使document.getElementsByClassName("task_launcher_item_heading")[0].childNodes[0].innerText
项变得可访问,这将返回元素的innerText,但是使用.click()
方法返回未定义。
任何想法肯定会有所帮助。
答案 0 :(得分:0)
您似乎只是想针对这个人,让他做点什么。
<div task-item="0" class="task_launcher_item_click">Text</div>
如果是这种情况,您可以改用const Nav = document.getElementById();
await Nav.click();
函数并为其提供自己的ID,同时仍然保留task_launcher_item_click
类吗?
单击该特定元素后,您可以使用Promise函数https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#frameclickselector-options
const [response] = await Promise.all([
page.waitForNavigation(waitOptions),
frame.click(selector, clickOptions),
]);
或属性选择器https://drafts.csswg.org/selectors-4/#attribute-selectors
const element = await page.$('[href="http://www.iana.org/domains/example"]');
await element.click();
} catch (err) {
console.error(err);
}
})();
答案 1 :(得分:0)
好吧,总有一天我会变得很聪明...我的问题是我应该使用#popupTaskMenu > nav > div.nth-child(2)
的{{1}}
我应该用冒号而不是句号!!!!我一生2小时的人!