javascript - 当selenium webdriver中输入类型不是 ' select'时如何从下拉列表中获取元素

标签 javascript jquery html selenium

我有一个带有 javascript 函数的按钮来显示下拉项,而不是通常的选择框。我需要提取此下拉列表中列出的所有项目并导出到 exel 工作表。以下按钮下列出的项目属于“复选框”类型。我使用 selenium webdriver。 这是 HTML 代码:

<input  id="selServicesBtn"  value="SELECT OPTION" onclick=" checkBoxDisp();" type="button">
<i class="fa fa-filter" id="FilterIcon"></i>
<div name="chkToggleWindow" id="chkToggleWindow" class="chkToggleWindow" style="display: block;"> 
    <div name="checkboxTagEnclosed" class="checkboxTagEnclosed"
id="checkboxTagEnclosed"> 
        <table name="checkboxTag" class="chkbxtag" cellpadding="3" cellspacing="0" border="0" onchange=" checkOnchange();">
            <tbody>
                <tr>
                    <td>
                        <input id="checkBox_00" type="checkbox" value="OPTION1" cellpadding="3" cellspacing="0" border="0" _bst_unchecked="false" name="checkboxTag" onchange=" checkOnchange();">
                        <label for="checkBox_00">OPTION1</label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input id="checkBox_01" type="checkbox" value="OPTION2" cellpadding="3" cellspacing="0" border="0" _bst_unchecked="false" name="checkboxTag" onchange=" checkOnchange();">
                        <label for="checkBox_01">OPTION2</label>
                    </td>
                </tr>
            </tbody>
        </table> 
    </div> 
</div>

这是我尝试过的:`

WebElement table_element = driver.findElement(By.name("checkboxTagEnclosed"));
List<WebElement> tr_collection=table_element.findElements(By.xpath("//*[@id='checkboxTagEnclosed']/table/tbody/tr"));

System.out.println("NUMBER OF ROWS IN THIS TABLE = "+tr_collection.size());
int row_num,col_num;
row_num=0;
for(WebElement trElement : tr_collection)
{
    List<WebElement> td_collection=trElement.findElements(By.xpath("td"));
    System.out.println("NUMBER OF COLUMNS="+td_collection.size());
    col_num=0;
    for(WebElement tdElement : td_collection)
    {
        System.out.println("row # "+row_num+", col # "+col_num+ "text="+tdElement.getText());
        col_num++;
    }
    row_num++;
}

我正在获取行数和列数,但文本为空。

output scrnshot

无法获取下拉列表的内容。请帮忙。

最佳答案

试试这个方法。

List<WebElement> dropdpwn = driver.findElements(By.xpath("//div[@id='checkboxTagEnclosed']/table[@class='chkbxtag']/..‌​//following::input[@‌​type='checkbox']"));   // Using list web-element get all web-elements.
System.out.println(dropdpwn.size());              

for(int i = 0; i<dropdpwn.size(); i++)           
{
   System.out.println(dropdpwn.get(i).getAttribute("value"));   //Using for loop getting one by one dropdown name using value attribute.
   Thread.sleep(2500);                          //wait for 2.5 seconds
}

关于javascript - 当selenium webdriver中输入类型不是 ' select'时如何从下拉列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919458/

相关文章:

javascript - ES6中如何检查类是否覆盖父方法

html - div 中的溢出自动在 ie 中不起作用

html - 在新的 chrome (44.0.2403.157) 中,地理定位不起作用

javascript - 当用户关闭以前的选项卡时,XUL 获取当前选项卡编号

javascript - CSS - 无法更改 <filter> 的此属性?

javascript - 为什么我不能让汉堡菜单正常工作?

java - 使用 Jquery/Javascript 的 Spring 表单选择选择/单击事件

javascript - jqGrid - 使用 setSelection 始终选择第一行不起作用

php - 使用 php 和 jQuery 将多个数组值放入数据库

html - 为什么 padding-bottom 无法向上移动元素?