如何通过使用selenium webdriver和java匹配文本模式从下拉列表中选择一个选项

时间:2013-05-09 06:30:20

标签: java selenium

我试图通过仅匹配可见文本的某些部分从下拉列表中选择一个选项,因为整个文本不会始终相同。有人可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

我没有对此进行过测试,但是在C#中你将如何做到这一点,你应该可以很容易地将它转换为Java代码。我能想到的两种方式:

<强> 1)

string selBoxID = "id of select box";
string partialText = "option text to match";
driver.FindElement(By.XPath("//select[@id='" + selBoxID + "']/option[contains(text(), '" + partialText + "')]")).Click();

OR

<强> 2)

SelectElement elSel = new SelectElement(driver.FindElement(By.Id("id of select box")));
IList<IWebElement> opts = elSel.Options;
foreach (IWebElement elOpt in opts)
{
    if(elOpt.Text.Contains("partial text to look for"){
        elOpt.Click();
        return true;
    }
}
return false;

答案 1 :(得分:1)

C#with LINQ

var menuOptions = new SelectElement(Driver.FindElement({LocatorForMenu})).Options;
var requiredOption = menuOptions.FirstOrDefault(element => element.Text.Contains(partialTextToMatch));
if (requiredOption == null)
    throw new Exception("Wasn't able to select menu item: " + partialTextToMatch);
requiredOption.Click();

答案 2 :(得分:0)

也许这会奏效吗?

new Select(driver.findElement(By.id("MyIdOrOtherSelector"))).selectByVisibleText("Something");

虽然我不确定是否允许部分文字。 还有

selectByValue(value)
selectByIndex(index)

如果有任何用途

答案 3 :(得分:0)

这是

的java代码
    WebElement dropdown = driverObj.findElement(By.id(id));
    dropdown.click();

    List<WebElement> options = dropdown.findElements(By.tagName("option"));
    for(WebElement option : options){
        String optTxt = option.getText();
        if(optTxt.contains(partialText)){
            option.click();
            break;
        }
    }
}

答案 4 :(得分:-1)

您可以使用以下命令。让我知道它是否有效。

driver.findElement(By.id("id of the dropdown")).sendkeys("part of visible text");
driver.findElement(By.id("id of the dropdown")).sendKeys(Keys.ENTER);