2015-11-19 111 views
0

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

要选择的HTML会很好 –

+0

查看更新的问题 – Dear1ofGdBear

回答

0

我使用webdriver的JS和第n个孩子对我的作品:

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

谢谢。关于循环逻辑的任何见解?我希望这样重复多次,因为有选择元素 – Dear1ofGdBear

+0

这个班级是否总是表格控制或者选择是否可以在这方面变化? – marchocolate

+0

该类将始终是窗体控件,但是页面上所有元素的类是窗体控件 – Dear1ofGdBear

0

我知道这是不是直接anwser,但我不能发表评论,您的文章还没有,所以我希望你的罚款这一点。

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

即使它不是完美的解决方案,我希望这些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() 
    } 
} 
+0

这应该在理论上工作,但它不会。我把一个console.log作为'else'语句抛出,但是这个console.log永远不会运行,所以看起来条件返回true。不知道hmm – Dear1ofGdBear

+0

@ Dear1ofGdBear对'tagName'不确定,把它改为'css'。如果不行,你应该调查html并找到正确的'css'。你也可以添加'print'进行调试。 –