我正在尝试使用puppeteer选择下拉菜单中的第一个元素。问题在于该选项的值在每次测试时都会更改,因此除非我可以首先检索该值,否则我将无法基于该值选择该选项。
当前使用:
await page.evaluate(() => {
document.querySelector('#select_id > optgroup:nth-child(1) > option:nth-child(1)').selected = true;
});
这将选择该选项,但是必须单击下拉项才能提交表单(我对此无权控制)。
我还尝试使用Puppeteer键盘命令向下箭头并按Enter,但是由于某些原因该功能无法正常工作。
答案 0 :(得分:0)
您可以使用selectedIndex
在option
下拉菜单中选择第一个select
:
await page.evaluate( () =>
{
document.getElementById( 'select_id' ).selectedIndex = 0;
});
答案 1 :(得分:0)
在项目上使用selected = true
或在select上使用selectedIndex = 0
不会触发 change 事件,因此不会提交您的表单。
我遇到了类似的问题,并使用该方法(使用page.evaluate和page.select)解决了该问题:
// Get the value of the first element
const value = await page.evaluate(() => {
return document.querySelector('#select_id option:nth-child(1)').value
})
// Use it with page.select to select the item and trigger the change event
page.select('#select_id', value)