【问题标题】:How to select multiple select options with selenium如何使用 selenium 选择多个选择选项
【发布时间】:2015-11-19 22:15:46
【问题描述】:

我正在使用 Selenium Webdriver 编写测试。我想选择页面上可能出现的每个下拉菜单的第二个选项。下拉菜单的数量每次都会不同。

这是我想出的,但它不起作用:

if (driver.findElements({tagName: 'select'})) {
  var select = driver.findElements({tagName: 'select'});
  for (i = 0; i < select.length; i ++) {
        i++;
        driver.findElement(webdriver.By.xpath('//select['+i+']/option[2]')).click();
    }
}

HTML:

<select class="form-control" name="answer_4282670">
    <option value="0">Please choose one...</option>
    <option value="option a">option a</option>
    <option value="option b">option b</option>
    <option value="option c">option c</option>
    <option value="Other" data-other-flag="">Other</option>
</select>

每个选项的值在每个实例中都会不同,所以我们不能根据它的值来选择任何东西

我该如何解决这个问题,以便它会点击菜单的第二个选项来显示每个将要显示的选项(如果出现)?

【问题讨论】:

  • 要选择的 HTML 会很好
  • 查看更新的问题

标签: javascript selenium selenium-webdriver automated-tests


【解决方案1】:

我正在使用 webdriver js,第 n 个孩子为我工作:

driver.click('#my_select_box').click('#my_select_box option:nth-child(3)')

【讨论】:

  • 谢谢。关于循环逻辑的任何见解?我希望这个重复次数与选择元素一样多
  • 该类是否始终是表单控制的,或者选择在这方面会有所不同?
  • 类永远是form-control,但是页面上所有元素的类都是form-control
【解决方案2】:

我知道这不是一个直接的回答者,但我还不能评论你的帖子,所以我希望你能接受。

我自己没有使用过 selenium,但我想开始使用它,我试图从这个网站上学到很多东西:https://code.google.com/p/selenium/wiki/AdvancedUserInteractions,在做了一些研究之后,我发现了一个类似的问题。 how to select element in multi select box in selenium webdriver 最大的不同是,anwser 是用 java 给出的。

尽管它不是完美的解决方案,但我希望这 2 个链接可以帮助您,再次抱歉,我不能将其写为评论

【讨论】:

    【解决方案3】:

    您可以应用此逻辑:定义一个列表变量,访问所有下拉列表的第二个选项,如 .form-control &gt; option:nth-child(3) 然后迭代此并为每个项目调用 .click 事件。

    if (driver.findElements({css: '.form-control > option:nth-child(3)'})) {
      var selects = driver.findElements({css: '.form-control > option:nth-child(3)'});
      for (i = 0; i < selects.length; i ++) {
            selects[i].click()
        }
    }
    

    【讨论】:

    • 这在理论上应该可行,但它没有。我将console.log 作为else 语句抛出,但console.log 从未运行,因此条件似乎返回true。不确定嗯
    • @Dear1ofGdBear 不确定tagName,将其更改为css。如果不起作用,您应该调查 html 并找到正确的 css。也可以添加print进行调试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2022-12-10
    • 2011-02-18
    • 2010-10-06
    • 2014-12-23
    • 2021-03-28
    相关资源
    最近更新 更多