如何验证IE下拉列表中的选定选项

时间:2015-03-03 21:16:12

标签: java html css selenium selenium-webdriver

我在验证是否在下拉列表中选择了某个选项时遇到了一些问题。在我的应用程序中,我有一个10个选项的下拉列表。如果我选择选项5,我想验证它是否实际被选中。

使用Firefox和Chrome,非常简单。下面是我的下拉列表的HTML和选项。

<select class="Test-field-ddlist" runat="server" onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphMainContent$ctl17\',\'\')', 0)" name="ctl00$cphMainContent$ctl17">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>

为验证所选选项,我使用CSS选择器创建了一个对象。然后我确认文本等于5。

public static final String ManagerPage_DropdownSelection = "css=.Test-field-ddlist option[selected]";

String actualtext = driver.getSingleElement(ManagerPage_DropdownSelection).getText();
Assert.assertEquals(actualtext, "5");

我在IE中遇到的问题是HTML不同。当我检查元素时,HTML看起来像这样。没有任何东西说5被选中

<SELECT name=ctl00$cphMainContent$ctl17 class=Test-field-ddlist onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphMainContent$ctl17\',\'\')', 0)" runat="server" sizcache="0" sizset="0"> 
<OPTION value=1>1</OPTION> 
<OPTION value=2>2</OPTION> 
<OPTION value=3>3</OPTION> 
<OPTION value=4>4</OPTION> 
<OPTION value=5>5</OPTION> 
<OPTION value=6>6</OPTION> 
<OPTION value=7>7</OPTION> 
<OPTION value=8>8</OPTION> 
<OPTION value=9>9</OPTION> 
<OPTION value=10>10</OPTION>

看起来隐藏了“选定”文字。如果我将HTML复制并复制到文本编辑器中,我可以看到文本“已选中”。与Firefox和Chrome不同,没有选定的属性。而是将所选文本添加到value属性中。

<SELECT name=ctl00$cphMainContent$ctl17 class=Test-field-ddlist onchange="javascript:setTimeout('__doPostBack(\'ctl00$cphMainContent$ctl17\',\'\')', 0)" runat="server" sizcache="0" sizset="0"> 
<OPTION value=1>1</OPTION> 
<OPTION value=2>2</OPTION> 
<OPTION value=3>3</OPTION> 
<OPTION value=4>4</OPTION> 
<OPTION value=5 selected>5</OPTION> 
<OPTION value=6>6</OPTION> 
<OPTION value=7>7</OPTION> 
<OPTION value=8>8</OPTION> 
<OPTION value=9>9</OPTION> 
<OPTION value=10>10</OPTION> 

我可以创建一个选择器,在所有浏览器中找到所选的下拉选项吗?或者有更好的方法来验证下拉列表的选定值吗?我尝试过以下方法。它似乎有效,但需要很长时间才能完成(约5分钟)。

protected void verifyDropDownSelection(String selector, String expectedvalue) {
        List<String> listA = new ArrayList<String>();
        listA.add(expectedvalue);
        List<String> listB = new ArrayList<String>();
        List<Element> DDSelected = driver.getSingleElement(selector).useAsDropdown().getAllSelectedOptions();
            for(Element selectedoption : DDSelected) {
                String actualtext = selectedoption.getText();
                listB.add(actualtext);
            }
        log.info("INFO: Verifying the selected option in the dropdown");
        Assert.assertEquals(listB, listA);
        log.info("PASS: "+expectedvalue+" was the selected option in the dropdown");
    }

1 个答案:

答案 0 :(得分:1)

我会让Select class处理案件:

WebElement select = driver.findElement(By.name("ctl00$cphMainContent$ctl17"));
Select dropDown = new Select(select);  

String selected = dropDown.getFirstSelectedOption().getText();
Assert.assertEquals(selected, "5");