如何使用selenium选择多个选择选项

时间:2015-11-19 22:15:46

标签: javascript selenium selenium-webdriver automated-tests

我正在使用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>

每个选项的值在每个实例中都会有所不同,因此我们无法通过其值

选择任何内容

如何解决此问题,以便点击菜单中的第二个选项(如果有人出现)?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我知道这不是一个直接的回答,但我不能评论你的帖子,所以我希望你对此感到满意。

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

给出的

即使它不是完美的解决方案,我希望这两个链接可以帮助你,再次抱歉我不能写这个评论

答案 2 :(得分:0)

您可以应用此逻辑:定义一个列表变量,同时访问所有下拉列表的第二个选项,如.form-control > 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()
    }
}