我有一个带有 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++;
}
我正在获取行数和列数,但文本为空。
无法获取下拉列表的内容。请帮忙。
最佳答案
试试这个方法。
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/