使用 Selenium(Java),当下拉列表元素具有有限的可识别属性时,如何从下拉列表中 select 一个值?
Using Selenium(Java), how to select a value from a drop down list, when the drop down list element have limited identifiable attributes?
我正在尝试 select 使用 Selenium 从下拉列表中获取一个值,并且我已经尝试了所有可能的方法(据我所知),但没有成功。
请帮我在这里找到合适的方法。
这里是HTML代码,供参考:
<select name="list" onchange="this.disabled=true;if(this.options[selectedIndex].value == '')this.disabled=false;else optionselect(this);" onfocus="hint('')">
而且,这些是我尝试过的方法。
方法一:
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);
方法三:
Select sel = new Select(element);
sel.selectByIndex(11);
Thread.sleep(5000);
方法四:
Select select = new Select(driver.findElement(By.name("list")));
select.selectByVisibleText("Text");
我猜测上述所有方法的问题在于识别下拉元素。但是我真的不确定这里出了什么问题。
试试下面的方法。
WebElement dd= driver.findElement(By.xpath("//select[@name='list']"));
Select s=new Select(dd);
s.selectByIndex(1);
也许您使用 Actions 会有些运气?
(使用 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();
我正在尝试 select 使用 Selenium 从下拉列表中获取一个值,并且我已经尝试了所有可能的方法(据我所知),但没有成功。 请帮我在这里找到合适的方法。
这里是HTML代码,供参考:
<select name="list" onchange="this.disabled=true;if(this.options[selectedIndex].value == '')this.disabled=false;else optionselect(this);" onfocus="hint('')">
而且,这些是我尝试过的方法。
方法一:
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);
方法三:
Select sel = new Select(element);
sel.selectByIndex(11);
Thread.sleep(5000);
方法四:
Select select = new Select(driver.findElement(By.name("list")));
select.selectByVisibleText("Text");
我猜测上述所有方法的问题在于识别下拉元素。但是我真的不确定这里出了什么问题。
试试下面的方法。
WebElement dd= driver.findElement(By.xpath("//select[@name='list']"));
Select s=new Select(dd);
s.selectByIndex(1);
也许您使用 Actions 会有些运气?
(使用 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();