2011-09-19 81 views
2

选择使用硒2中选择框不能选择项目的Firefox(或铬)驱动程序不能选择从选择框中

<select id="activations_month" name="activations[month]"> 
<option value="April 2011">April 2011</option> 
<option value="May 2011">May 2011</option> 
<option value="June 2011">June 2011</option> 
<option value="July 2011">July 2011</option> 
<option value="August 2011">August 2011</option> 
<option selected="selected" value="September 2011">September 2011</option> 
</select> 

选择下拉=新选择(sDriver.findElement(By.id(“activations_month” ))); dropDown.selectByValue(“2011年8月”);

我试过按价值,按指数,按可见文本和取消选择,所有只是没有做任何事情。我尝试捕捉不赶它离开回到外面TestNG的测试运行,并到下一个方法

这确实做工精细异常,并返回正确的价值观

List<WebElement> options = dropDown.getOptions(); 

System.out.println(options.size()); 
System.out.println(options.get(0).getText()); 
System.out.println(options.get(1).getText()); 
+0

更多信息:其实步入硒选择代码本身它未能找到在XPath检查我的搜索字符串,它只要你进入不selectByVisibleText方法,那么它似乎只是从InvocationTargetException跳出选择的代码,并且testNG接管了 – ducati1212

回答

0

这应该解决您的问题,不管它是什么。不是最大的方式来选择一个选项,但它应该工作:

List<WebElement> options = dropDown.getOptions(); 
for(WebElement option : options) 
{ 
    if(option.getAttribute("value").equals("August 2011")) 
    { 
     option.click(); 
     break; 
    } 
} 
+0

确实有效。我觉得奇怪的是,我必须这样做,因为硒似乎本质上希望让您用较少的代码进行选择。反正谢谢,如果有人知道我为什么原来的代码失败让我知道 – ducati1212

+0

嘿杜卡迪,通常你尝试的方式确实工作。您正在使用的页面可能存在一些问题。我已经看到了特定页面的情况,其中selectbyvalue失败,因为即使它在浏览器中可见,根据硒元素也不是“可见的”。 – RedDeckWins

0

这可能不是理想的解决方案,但为了保持这种简单(并使其正常工作),您是否尝试过实例化一个WebDriverBackedSelenium

driver = new FirefoxDriver(); 
selenium = new WebDriverBackedSelenium(driver, "your_url"); 

其次是传统 -

selenium.select("id=activations_month", "label=May 2011"); 
selenium.select("id=activations_month", "label=June 2011"); 
+0

问题在于我已经导航到该页面并完成了几个步骤。所以我需要用硒支持的网络驱动程序来编写整个测试。不理想。如果有帮助,我认为这是一个实际的硒缺陷。这工作了一段时间,以及这是我写的代码工作,我想说它打破了Firefox的更新,但我也更新了硒模块。 – ducati1212

+0

f我尝试通过索引选择我在硒中选择此代码select boolean matched = false; (WebElement option:getOptions()){ if(match.equals(option.getAttribute(“index”))){ option.setSelected(); (!isMultiple()){return; } matched = true; } 我在我的代码索引3索引 - > dropDown.selectByIndex(3); 我看到它一步一步,并在索引它匹配去option.setSelected();并失败到 invocationTargetException这是不是在方法中处理,所以我完成了选择并退出到测试运行器。思考? – ducati1212

+0

本文给出相当于Selenium RC命令 - http://rostislav-matl.blogspot.com/2011/03/moving-to-selenium-2-on-webdriver-part_26.html – rs79