如何从下拉列表中选择元素和java&硒?

时间:2016-12-28 09:32:37

标签: java selenium web

我正在尝试从下拉列表中选择国家/地区代码,其中元素没有索引或ID我只能按值选择,我尝试使用SelectByValue& VisibleText两者都没有工作也尝试列出元素和循环,但没有工作

更新 它给了我错误:org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been “select” but was “button”

如何从带有元素列表的按钮中选择?

这是代码:

public void selectInDropDownMenuCountryCode(final WebDriver driver, final By selector, final String selection) {
    _wait.until(ExpectedConditions.visibilityOfElementLocated(selector));
    final Select select = new Select(driver.findElement(selector));
    //select.selectByVisibleText(selection);
    //select.selectByValue(selection);
     String code;

      List<WebElement> optionsD = select.getOptions();

    for (WebElement option : optionsD) {
         code = option.getAttribute("value");
        if (code == selection) {
            option.click();
            break;
        }       

    }
}

html的屏幕截图 here is the html code

2 个答案:

答案 0 :(得分:0)

如果您引用HTML,则可以看到Dropdown未使用HTML Select标记构建。因此,您无法使用以下方法: -

  1. selectByValue
  2. selectByIndex
  3. selectByVisibleText
  4. 您必须使用常规方法识别元素以处理下拉列表。例如:尝试通过识别元素单击下拉列表,然后再次单击国家/地区名称以选择值。

答案 1 :(得分:0)

尝试使用简单的click()方法选择所需的下拉选项:

_wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(text(), 'Egypt (+20)')]"))).click();

XPath,例如"//a[@country='Egypt']""//a[@value='EG']"似乎也适用

请注意,在单击其选项

之前,应单击相应元素以打开下拉列表