Node.js 如何使用无铬API从下拉列表中选择选项?

Node.js 如何使用无铬API从下拉列表中选择选项?,node.js,headless-browser,chromeless,Node.js,Headless Browser,Chromeless,我使用的是无铬API() 如何从下拉列表中选择选项? 具体来说,我想选择最后一个选项,其值为“其他” 我的HTML是: 您可以通过以下方法实现这一点:在加载的任何页面的浏览器上下文中评估任何Javascript: 等待无铬 后藤先生('http://yourwebsite.com/yourpage') .评估(()=>{ select=document.querySelector('select.Decept form select') select.value='other' }) 或者,具

我使用的是无铬API() 如何从下拉列表中选择选项? 具体来说,我想选择最后一个选项,其值为“其他”

我的HTML是:


您可以通过以下方法实现这一点:在加载的任何页面的浏览器上下文中评估任何Javascript:

等待无铬
后藤先生('http://yourwebsite.com/yourpage')
.评估(()=>{
select=document.querySelector('select.Decept form select')
select.value='other'
})
或者,具体选择选择列表中最后一项的内容:

等待无铬
后藤先生('http://yourwebsite.com/yourpage')
.评估(()=>{
document.querySelector('select.declient-form-select option:last child')。selected=true
})

也可以不用
evaluate()
方法来完成,尽管方法有些复杂。避免
evaluate()

await chromeless
    .click('#the-select-element')
    .type('First characters of description text of desired option', '#the-select-element')
    .click('#the-select-element option[value="the-matching-value"]')
或者使用问题中的示例:

await chromeless
    .click('select.decline-form-select')
    .type('Oth', 'select.decline-form-select')
    .click('select.decline-form-select option[value="other"]')
使用本机无铬命令选择选项需要首先单击
select
元素,然后根据选项的可见文本内容键入文本以选择所需选项(明确标识该选项的前几个字符就足够了),然后单击所需的
选项
元素。由于无法使用css选择器按文本内容查找
选项
元素,因此必须通过其他方式选择元素,例如值或序号

发送箭头键而不是键入字符来选择选项可能会起作用,但我在测试中发现使用
press()
方法有缺陷。(在执行使用
按()
发送回车键或空格键的测试时,带有Chrome设置的选项卡将随机打开。)

尽管如此,我还是无法用Chromeless可靠地运行测试。似乎有一些问题与是否将元素滚动到视图中有关。虽然基于数据库的系统,并且在设置和编写代码方面有点复杂,但是为了获得更好的可靠性,可能值得付出努力