在 Puppeteer 中不能 select 每页选项
Can not select per page option in Puppeteer
有类似的 发布,我将相同的技术应用于一个非常相似的案例。但是这个解决方案对我不起作用,我不知道是什么导致了错误。
这是每个 select 的 html source code
:
<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;">
<small>显示</small>
<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.mysite-com/admin/order?per_page=100" >100</option>
</select>
<small>条</small>
</label>
由于这里的 select
不是原生 HTML 元素而是 bootstrap
元素,我选择使用 page.click
。代码应该执行 1) 单击 select
元素并使选项可供选择,以及 2) 选择每页 100 个。这是我的代码:
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"]'), //<=== causing error
]);
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"] > option:nth-child(5)'),
]);
错误是:
Error: No node found for selector: select[name="per-page"]
at assert (C:\d\code\js\wbot\node_modules\puppeteer\lib\helper.js:259:11)
at Frame.click (C:\d\code\js\wbot\node_modules\puppeteer\lib\FrameManager.js:704:5)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
尝试了不同的select或,例如
select.input-sm[name="per-page"]
select.input-sm.grid-per-pager
但其中 none 有效。 selector 对我来说似乎是正确的,但它无法找到该元素。还尝试了 page.select
但效果不佳。我在这里缺少什么?
await page.waitForSelector('select[name="per-page"]')
等待元素出现在 select 之前。
有类似的
这是每个 select 的 html source code
:
<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;">
<small>显示</small>
<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.mysite-com/admin/order?per_page=100" >100</option>
</select>
<small>条</small>
</label>
由于这里的 select
不是原生 HTML 元素而是 bootstrap
元素,我选择使用 page.click
。代码应该执行 1) 单击 select
元素并使选项可供选择,以及 2) 选择每页 100 个。这是我的代码:
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"]'), //<=== causing error
]);
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"] > option:nth-child(5)'),
]);
错误是:
Error: No node found for selector: select[name="per-page"]
at assert (C:\d\code\js\wbot\node_modules\puppeteer\lib\helper.js:259:11)
at Frame.click (C:\d\code\js\wbot\node_modules\puppeteer\lib\FrameManager.js:704:5)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
尝试了不同的select或,例如
select.input-sm[name="per-page"]
select.input-sm.grid-per-pager
但其中 none 有效。 selector 对我来说似乎是正确的,但它无法找到该元素。还尝试了 page.select
但效果不佳。我在这里缺少什么?
await page.waitForSelector('select[name="per-page"]')
等待元素出现在 select 之前。