如何使用Java在Selenium WebDriver中选择下拉列表值

时间:2013-11-22 06:48:14

标签: java selenium-webdriver

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

这是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>

请建议我点击下拉列表的方法。

我尝试使用上面的示例行,但是出现错误,例如Element当前不可见,因此可能无法与之交互 命令持续时间或超时:32毫秒 下拉值是jquery multiselect小部件格式

10 个答案:

答案 0 :(得分:101)

将WebElement包装到Select Object中,如下所示

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");

答案 1 :(得分:5)

如果你想在一行中写下全部试试

new Select (driver.findElement(By.id("designation"))).selectByVisibleText("Programmer ");

答案 2 :(得分:4)

如上所述,我们需要在Selenium中实现Select Class,并且我们可以使用各种可用的方法,如: - enter image description here

答案 3 :(得分:3)

实际上select会选择但不会将所选值放在相应的字段中。想知道下面的代码片段完美无缺

driver.findElement(By.name("period")).sendKeys("Last 52 Weeks");

答案 4 :(得分:0)

使用xpath选择下拉列表 的代码

Select select = new 
Select(driver.findElement(By.xpath("//select[@id='periodId']));

使用selectByVisibleText选择特定选项 的代码

select.selectByVisibleText(Last 52 Weeks);

答案 5 :(得分:0)

您可以使用以下方法处理硒中的下拉。

  1. driver.selectByVisibleText( “文本”);
  2. driver.selectByIndex(1);
  3. driver.selectByValue( “PROG”);
  4. 有关详情,请参阅http://www.codealumni.com/handle-drop-selenium-webdriver/这篇文章。

    它肯定会帮助您解决疑问。

答案 6 :(得分:-1)

WebDriver driver = new FirefoxDriver();
WebElement identifier = driver.findElement(By.id("periodId"));
Select select = new Select(identifier);
select.selectByVisibleText("Last 52 Weeks");

答案 7 :(得分:-1)

我没有尝试过Selenium,但是对于Galen测试,这是有效的,

  

var list = driver.findElementByID(&#34; periodID&#34;); //这将返回   网页元素

     

list.click(); //这将打开下拉列表。

     

list.typeText(&#34;14瓦特&#34); //这将选择选项&#34; 14w&#34;。

你可以在硒中试试,galen和硒的工作方式相似。

答案 8 :(得分:-1)

首先将包导入:

  

import org.openqa.selenium.support.ui.Select;

然后用单行写为:

  

new Select(driver.findElement(By.id(&#34; sampleid&#34;))。selectByValue(&#34; SampleValue&#34;);

答案 9 :(得分:-3)

试试这个:

driver.findElement(By.name("period")).sendKeys("Last 52 Weeks");