2013-11-22 59 views
34

我是selenium的新手,目前正在使用selenium webdriver,我想从下拉列表中选择一个值。 id = periodId和选项很多,我试图选择过去52周。如何在使用Java的Selenium WebDriver中选择下拉列表值

下面是HTML标签:

<select id="periodId" name="period" style="display: none;"> 
<option value="l4w">Last 4 Weeks</option> 
<option value="l52w">Last 52 Weeks</option> 
<option value="daterange">Date Range</option> 
<option value="weekrange">Week Range</option> 
<option selected="" value="monthrange">Month Range</option> 
<option value="yeartodate">Year To Date</option> 
</select> 

请建议我一些方法来点击下拉。

我试图用上面的例子线,但我得到错误如元当前不可见,因此可以不与 命令持续时间或超时进行交互:32毫秒 的下拉菜单值是jquery的多选插件格式

+1

http://stackoverflow.com/questions/9604336/selenium-webdriver-select-element – dckuehn

+0

可能重复我试过链接的方法,它不是与我的选项一起工作,我可以有其他一些型号 – Amirdha

+0

我认为, down是不可见的,因为某些原因,改变它不是很好的方法,但你可以随时使用JavaScript更改元素的属性值 –

回答

82

只是包装你的WebElement为选择对象如下图所示

Select dropdown = new Select(driver.findElement(By.id("identifier"))); 

一旦做到这一点,你可以在3种方式中选择所需的值。考虑一个HTML文件中像这样

<html> 
<body> 
<select id = "designation"> 
<option value = "MD">MD</option> 
<option value = "prog"> Programmer </option> 
<option value = "CEO"> CEO </option> 
</option> 
</select> 
<body> 
</html> 

我们确定下拉做

Select dropdown = new Select(driver.findElement(By.id("designation")));

要选择自己的选择说“程序员,你可以做

dropdown.selectByVisibleText("Programmer ");

dropdown.selectByIndex(1);

dropdown.selectByValue("prog"); 
+2

这是一个正常的选择使用的罚款答案,但我认为OPs真正的问题是事实选择元素是不可见的 -