在导航中选择一个Div

时间:2019-05-22 19:46:09

标签: javascript selector puppeteer

我正在尝试使用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()方法返回未定义。

任何想法肯定会有所帮助。

2 个答案:

答案 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小时的人!