我正在使用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>
每个选项的值在每个实例中都会有所不同,因此我们无法通过其值
选择任何内容如何解决此问题,以便点击菜单中的第二个选项(如果有人出现)?
答案 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()
}
}