首页 > 解决方案 > 如何模拟鼠标单击/击键以选择 Puppeteer 中每页的列表数量?

问题描述

我很难模拟鼠标点击/击键来选择之后每页有多少个列表page.goto()。以下是该per page选项的 HTML 源代码:

<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;">
    <small>Show</small>&nbsp;
    <select class="input-sm grid-per-pager" name="per-page">
        <option value="https://www.mysite-com/admin/order?per_page=10" >10</option>
        <option value="https://www.mysite-com/admin/order?per_page=20" selected>20</option>
        <option value="https://www.mysite-com/admin/order?per_page=30" >30</option>
        <option value="https://www.mysite-com/admin/order?per_page=50" >50</option>
        <option value="https://www.mysited-com/admin/order?per_page=100" >100</option>
    </select>
    &nbsp;<small>Piece</small>
</label>

默认是20每页列表,我想将其更改100为每页列表,这需要鼠标单击框并按两次向下箭头键来选择100。以下是一些用于此目的的代码:

await page.mouse.click("label.control-label .grid-per-pager");
await page.keyboard.press("ArrowDown");
await page.keyboard.press("ArrowDown");

它给了我一些错误。这里缺少什么?

标签: javascriptnode.jsgoogle-chrome-devtoolspuppeteerheadless-browser

解决方案


page.select()

在这种情况下使用的最佳方法是page.select().

此方法接受select元素的选择器作为第一个参数,valueoption要选择的元素作为第二个参数:

await page.select('select[name="per-page"]', 'https://www.mysited-com/admin/order?per_page=100');

推荐阅读