如何使用Selenium从下拉列表中进行选择

时间:2016-02-11 07:36:22

标签: java selenium

请参阅下面的代码,我需要点击下拉列表以显示列表

<span class="k-widget k-dropdown k-header" style="" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="" aria-disabled="false" aria-readonly="false" aria-busy="false">
    <span class="k-dropdown-wrap k-state-default k-state-hover k-state-focused" unselectable="on">
    <span class="k-input" unselectable="on">Is equal to</span>
    <span class="k-select" unselectable="on">
        <span class="k-icon k-i-arrow-s" unselectable="on">select</span>
    </span>
</span>

enter image description here

3 个答案:

答案 0 :(得分:0)

driver.FindElement(By.CssSelector(".k-widget k-dropdown k-header")).click()

答案 1 :(得分:0)

我想你再次点击使用JavascriptExecutor

就可以了
WebElement element1 = driver.findElement(By.xpath("//span[@class='k-widget k-dropdown k-header' and @role='listbox']"));
JavascriptExecutor executor1 = (JavascriptExecutor) oBrowser;
executor1.executeScript("arguments[0].click();", element1);

如果Xpath上面没有工作,请尝试以下方法: -

//span[@class='k-widget k-dropdown k-header']

希望它会对你有所帮助:)。

答案 2 :(得分:0)

前几天,我遇到了这个确切的问题。问题是您要引用的Kendo UI <span>元素使用<ul>元素获取其内文,但是<ul>列表处理选项更改/选择。单击<span>时,将无法从弹出/下拉菜单中选择一个选项,而必须单击<li>元素,该元素包含跨度引用的文本选项。

在您的示例中,在HTML文档中的其他位置,您会发现一个{... 1}列表,类似于...

<ul>

如果要选择“另一个选项”,请使用硒3:

<ul unselectable="on" class="k-list k-reset" tabindex="-1" aria-hidden="true" aria-live="off" data-role="staticlist" role="listbox"> <li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" data-offset-index="0">is equal to</li> <li tabindex="-1" role="option" unselectable="on" class="k-item" data-offset-index="1">another option</li> </ul>

您应该看到driver.findElement(By.xpath("//li[text()='another option']")).click();内部文本已更改为“另一个选项”,您可以继续进行测试。