通常我使用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> <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会起作用......
在这种情况下如何选择它??
谢谢!
答案 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);
}