2016-09-20 85 views
1
<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> 

这是一个称呼下拉,我需要从下拉值中选择先生。我的代码是不完整的,我不知道怎么写的脚本,但我的代码如下,使用classname的硒webdriver下拉选择

driver.findElement(By.className("k-input")).click(); 
Thread.sleep(1000); 
driver.findElement(By.className("k-item")).click(); 
driver.findElement(By.tagName("Mr")).click(); 

回答

2

由于它是一个KendoUI DropDown

您必须在下拉第一次点击element.Could是spandiv

我已经采取了演示站点到demsonstrate如何可以选择价值

我要选择Orange value from Cap Color DropDown

enter image description here

正如你所看到的元素是span与类k-widget k-dropdown k-header

你必须先点击那个。然后只有你会得到ul列表填充。

通过使用简单的xpath,您可以选择任何k-item

//ul[@id='idOfUl']/li[@class='k-item' and text()='itemName']

对你来说应该是

//ul[@id='Salutation_listbox']/li[@class='k-item' and text()='Mr']

示例代码

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(); 
    } 
+0

非常感谢。这个方法对我来说工作得很好。 – user3836485

+0

@ user3836485然后你可以[接受它作为答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) – Madhan

0

我明白你需要通过类名访问的元素。所以我已经将它修改为带有属性的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(); 
+0

在执行此评论我收到错误消息,未知错误:document.getelementsbyclassname不是函数 – user3836485

+0

它应该是'getElementsByClassName' – Akshay

相关问题