这是源代码:
<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;]
答案 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");