使用selenium Webdriver从下拉列表中搜索和选择值

时间:2017-07-10 12:59:39

标签: selenium dropdown

我想知道如何从值池的下拉列表中选择特定值。 我的逻辑是

1.Open  the page
2.Fetch all the values from dropdown in list 
3.Use a loop
4.Look for that value
5.If the value is not there,select the value x

对我来说,这就是说没有这样的元素异常

我们是否需要首先关注该元素 在我的代码中,我想选择Nextran Corporation 以下是我的代码

@Test(dependsOnMethods={"go2personalsettings"})
    void setru()
    {
        driver.switchTo().frame("contentFrame");
        Select rudropdown=new Select(driver.findElement(By.id("DefaultOrganisationDropDown")));
        List<WebElement> drop=rudropdown.getOptions();
        int e=drop.size();
        String actual_ru="999425, NEXTRAN CORPORATION - JACKSONVILLE";
        for(int i=0;i<e;i++)
        {
            String expected_ru=drop.get(i).getText();
            if(!expected_ru.equals(actual_ru))
            {
            rudropdown.selectByValue(actual_ru);    
            }

    }

2 个答案:

答案 0 :(得分:0)

试试这个:

WebDriverWait wait = new WebDriverWait(driver, 15);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[contains(text(),'" + ElementValue + "')]")));

WebElement webElement = driver.findElement(By.xpath("//li[contains(text(),'" + ElementValue + "')]"));

webElement.click();

答案 1 :(得分:0)

您的代码中的逻辑与您所​​说的意图不符。您声明要从下拉列表中选择特定值(如果存在)。如果没有,请选择值&#39; x&#39;。您的代码无法选择价值&#39; x&#39;所以我不确定&#39; x&#39;但是你可以填写下面的内容。基本上,代码尝试选择期望值。如果该预期值不存在,它将抛出一个被捕获的异常,然后“&#39; x&#39;被选中。如果确实存在,则选择该值并选择&#39; x&#39;被跳过了。

driver.switchTo().frame("contentFrame");
Select rudropdown = new Select(driver.findElement(By.id("DefaultOrganisationDropDown")));
String actual_ru = "999425, NEXTRAN CORPORATION - JACKSONVILLE";
try
{
    rudropdown.selectByValue(actual_ru);
}
catch (NoSuchElementException e)
{
    // expected value does not exist, select the value x instead
    rudropdown.selectByValue("x");
}