我尝试使用Selenium从下拉列表中选择一个值,并尝试了所有可能的方法(据我所知)但是徒劳无功。 请帮我在这里找到合适的方法。
以下是HTML代码,供参考:
<select name="list" onchange="this.disabled=true;if(this.options[selectedIndex].value == '')this.disabled=false;else optionselect(this);" onfocus="hint('')">
而且,这些是方法,我试过。
方法-1:
new Select(driver.findElement(By.xpath("xpath"))).selectByVisibleText("Text*");
new Select(driver.findElement(By.name("list"))).selectByVisibleText("Text");
方法-2 :(我尝试使用所有可能的方法来识别名称下的下拉元素,abs xpath,rel xpath,cssSelector等,但没有任何东西可以识别元素)
Select sel = new Select(element);
sel.selectByValue("Value");
Thread.sleep(5000);
方法-3:
Select sel = new Select(element);
sel.selectByIndex(11);
Thread.sleep(5000);
方法-4:
Select select = new Select(driver.findElement(By.name("list")));
select.selectByVisibleText("Text");
我猜测上述所有方法中的问题在于识别下拉元素。但我真的不确定这里有什么问题。
答案 0 :(得分:1)
尝试使用以下内容。
WebElement dd= driver.findElement(By.xpath("//select[@name='list']"));
Select s=new Select(dd);
s.selectByIndex(1);
答案 1 :(得分:0)
也许你会使用动作获得一些运气?
(使用Firefox或Chrome,IE在执行悬停操作时表现得很奇怪)
Actions actions = new Actions(driver);
WebElement hoverElement = driver.findElement(By.name("list"));
Select sel = new Select(element);
// hover over the element
actions.
moveToElement(hoverElement).
perform();
// now maybe all of your approaches would work
// sel.selectByIndex(11);
// sel.selectByValue("Value");
// sel.selectByVisibleText("Text");
// or just find and click your desired element:
WebElement targetElement = driver.findElement(targetElementLocator);
actions.
moveToElement(targetElement).
click().
perform();