如何从Selenium的下拉列表中选择一个值?

时间:2017-08-01 20:24:49

标签: javascript java selenium

这是源代码:

 <select name="backgroundcolor" onchange="backgroundColor();">
    <option value="200">Red</option>
    ....      
 </select>

我尝试了以下代码,以便选择&#34; Red&#34;选项,但它没有用。

Select dropDown = new Select(driver.findElement(By.name("backgroundcolor")));
dropDown.selectByValue("200");

我得到NoSuchElementException例外

  

无法找到元素// * [name =&#39; backgroundcolor&#39;]

4 个答案:

答案 0 :(得分:0)

试试这个

Select select = new Select(driver.findElement(By.name("backgroundcolor")));
select.deselectAll();
select.selectByVisibleText("Red");

也许By.name是问题,我习惯使用类似的东西:

By.xpath("//path_to_drop_down"))

答案 1 :(得分:0)

试试这个,您需要将以下代码转换为您正在使用的语言

from selenium.webdriver.support.select import Select as WebDriverSelect
element = WebDriverSelect(driver.find_element_by_name('backgroundcolor'))
element.select_by_value('200')

答案 2 :(得分:0)

您注意到它可能是时间问题。如果是这样,您需要等到元素出现在页面上。试试这个:

By locator = By.name("backgroundcolor");
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.presenceOfElementLocated(locator));
Select dropDown = new Select(driver.findElement(locator));
dropDown.selectByValue("200");

答案 3 :(得分:0)

我得到“无法找到元素* [name ='backgroundcolor']”错误。我首先尝试到达包含该下拉列表的iframe时解决了这个问题。顺便说一下,这是一个时间问题。

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(theindexofframe));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("backgroundcolor")));

您应该等待加载iframe之后,您应该等待也加载“backgroundcolor”元素。之后您可以从下拉列表中选择值,如下所示:

Select dropDown = new Select(driver.findElement(By.name("backgroundcolor")));
dropDown.selectByValue("200");