<div class="k-list-scroller" unselectable="on" style="height: 200px;">
<ul id="Salutation_listbox" class="k-list k-reset" unselectable="on" tabindex="-1" aria-hidden="false" aria-live="off" data-role="staticlist" role="listbox">
<li id="c77e68b5-ded1-48a8-932c-74a5b2f45c66" class="k-item k-state-selected k-state-focused" data-offset-index="0" unselectable="on" role="option" tabindex="-1">Salutation</li>
<li class="k-item" data-offset-index="1" unselectable="on" role="option" tabindex="-1" style="">Mr</li>
<li class="k-item" data-offset-index="2" unselectable="on" role="option" tabindex="-1">Mrs</li>
<li class="k-item" data-offset-index="3" unselectable="on" role="option" tabindex="-1">Miss</li>
<li class="k-item" data-offset-index="4" unselectable="on" role="option" tabindex="-1">Ms</li>
<li class="k-item" data-offset-index="5" unselectable="on" role="option" tabindex="-1">Dr</li>
<li class="k-item" data-offset-index="6" unselectable="on" role="option" tabindex="-1">Prof</li>
<li class="k-item" data-offset-index="7" unselectable="on" role="option" tabindex="-1">Rev</li>
</ul>
</div>
</div>
这是一个称呼下降,我需要从下拉值中选择Mr。我的代码不完整我不知道如何为它编写脚本,但我的代码如下,
driver.findElement(By.className("k-input")).click();
Thread.sleep(1000);
driver.findElement(By.className("k-item")).click();
driver.findElement(By.tagName("Mr")).click();
答案 0 :(得分:2)
因为它是Session.nodeExists(String)
您必须先点击下拉元素。可以是span
或div
我已经使用演示版网站来判断如何选择值
我要从Orange
DropDown中选择Cap Color
值
正如您所见,该元素为span
,其中包含k-widget k-dropdown k-header
类。
你必须先点击它。然后,只有您填写了ul列表。
从那里你可以使用简单的xpath选择任何k-item
。
// UL [@id =&#39; idOfUl&#39;] /锂[@class =&#39; K-项&#39;和text()=&#39; itemName&#39;]
对你来说应该是
// UL [@id =&#39; Salutation_listbox&#39;] /锂[@class =&#39; K-项&#39;和text()=&#39; Mr&#39;]
示例代码
public void testKendo() {
driver.get("http://demos.telerik.com/kendo-ui/dropdownlist/index");
String capColorDropDown = "//span[@role='listbox']";
driver.findElement(By.xpath(capColorDropDown)).click();
String itemName = "Orange";
String listId = "color_listbox";
String xpathForItem = "//ul[@id='" + listId + "']/li[@class='k-item' and text()='" + itemName + "']";
driver.findElement(By.xpath(xpathForItem)).click();
driver.quit();
}
答案 1 :(得分:0)
我知道你的要求是通过classname访问元素。所以我把它修改为xpath,其中包含属性类和文本。
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getelementsbyclassname('k-list-scroller').setAttribute('unselectable', 'off')");
js.executeScript("document.getelementsbyclassname('k-list k-reset').setAttribute('unselectable', 'off')");
driver.findElement(By.xpath("//li[text()='Mr'and class='k-item']")).click();