使用 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();