首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用chromeless从下拉列表中选择选项?

如何使用chromeless从下拉列表中选择选项?
EN

Stack Overflow用户
提问于 2018-01-06 03:50:23
回答 2查看 488关注 0票数 2

我正在使用无铬接口(https://github.com/graphcool/chromeless),如何从下拉列表中选择一个选项?具体地说,我想选择value=为“other”的最后一个选项。

我的HTML是:

EN

回答 2

Stack Overflow用户

发布于 2018-01-08 12:47:46

您可以使用evaluate()方法来实现这一点,该方法允许您在所加载的任何页面的浏览器上下文中评估任何Javascript:

代码语言:javascript
复制
await chromeless
  .goto('http://yourwebsite.com/yourpage')
  .evaluate(() => {
    select = document.querySelector('select.decline-form-select')
    select.value = 'other'
  })

或者,具体选择选择列表中的最后一项:

代码语言:javascript
复制
await chromeless
  .goto('http://yourwebsite.com/yourpage')
  .evaluate(() => {
    document.querySelector('select.decline-form-select option:last-child').selected = true
  })
票数 1
EN

Stack Overflow用户

发布于 2018-04-19 21:49:12

这也可以在没有evaluate()方法的情况下完成,尽管是以一种有点复杂的方式。当不知道为了使web应用程序正常工作而必须触发哪些事件时,避免evaluate()是很有用的。

代码语言:javascript
复制
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"]')

或者使用问题中发布的示例:

代码语言:javascript
复制
await chromeless
    .click('select.decline-form-select')
    .type('Oth', 'select.decline-form-select')
    .click('select.decline-form-select option[value="other"]')

使用本机无铬命令选择一个选项需要先单击select元素,然后根据选项的可见文本内容键入文本以选择所需的选项(明确标识选项的前几个字符就足够了),然后单击所需的option元素。由于不可能使用css选择器根据文本内容找到option元素,因此必须通过其他方式选择该元素-例如,值或序号。

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

尽管如此,我还是无法使用Chromeless可靠地运行测试。似乎存在与将元素滚动到视图中或不滚动元素有关的问题。虽然webdriver-based系统http://webdriver.iohttp://nightwatchjs.orghttps://www.npmjs.com/package/selenium-webdriver的设置和编码有点复杂,但为了获得更好的可靠性,这可能是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48120359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档