使用硒选择下拉列表

时间:2015-09-29 10:52:59

标签: java html selenium

通常我使用selenium Select对象:

val selectCode = new Select(driver.findElement(By.id("someID")))
selectCode.selectByValue("4")

我的问题是我在html代码中没有价值,这是按钮html:

<button type="button" class="btn dropdown-toggle btn-default" data-toggle="dropdown" data-id="admin-select-page" title="Select..."><span class="filter-option pull-left">Select...</span>&nbsp;<span class="bs-caret"><span class="caret"></span></span></button>

这是我需要选择的值:

<li data-original-index="4" data-optgroup="2"><a tabindex="0" class="opt  " style="" data-tokens="null"><span class="text">
Invoices
</span><span class="glyphicon glyphicon-ok check-mark"></span></a></li>

但正如你在上面所看到的,我通常有id和value,所以By.id或By.value会起作用......

在这种情况下如何选择它??

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用xpath定位元素。

driver.findElement(By.(xpath("//button[contains(text(),'Select...')]/li[contains(text(),'Invoices')]")

这里,text()函数用于查找包含标记内部文本的元素。

答案 1 :(得分:0)

对我来说,总是使用这段代码(它很小而且很实用):

new Select(driver.findElement(yourElement)).selectByVisibleText("Txt");

在Page Object(+ PageFactory)中,它将是这样的:

@FindBy(xpath = "//select[@name='filter_state']") //for example
private WebElement dropdownList;
 private void selectStatus(String selectText){
    new Select(dropdownList).selectByVisibleText(selectText);
}