2

我是新的使用Java的硒webdriver。我能够编写Java代码来选择下拉菜单,如果有正常的选择类的东西,如: -如何选择jQuery无订单下拉列表硒硒webdriver

new Select(driver.findElement(By.id("someid"))).selectByValue("1")); 

但下面的代码有选择2类从jQuery的。试过多个选项。从那时起,我可以选择显示下拉菜单,但我无法选择Apple或Orange,或选择葡萄。

有人可以帮助我如何从这种下拉列表中选择Apple?任何线索或代码非常感谢。 ..

这是代码看起来提前像

<div id="select2-drop" class="select2-drop select2-display-none select2-with-searchbox select2-drop-active" style="somestyleelements"> 
 
\t <div class="select2-search"> 
 
\t \t <ul id="select2-results-1" class="select2-results" role="listbox"> 
 
\t \t \t <li class="select2-results-dept-0 select2-result select2-result-selectable select2-highlighted" role="presentation"> 
 
\t \t \t \t <div id="select2-result-label-random" class="select2-result-label" role="option"> 
 
\t \t \t \t \t <span class="select2-match"></span> 
 
\t \t \t \t \t \t Apples 
 
\t \t \t \t </div> 
 
\t \t \t </li> 
 
\t \t \t <li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"> 
 
\t \t \t \t <div id="select2-result-label-random" class="select2-result-label" role="option"> 
 
\t \t \t \t \t <span class="select2-match"></span> 
 
\t \t \t \t \t \t Orange 
 
\t \t \t \t </div> \t 
 
\t \t \t <li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"> 
 
\t \t \t <li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"> 
 
\t \t \t <li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"> 
 
\t \t </ul> 
 
</div>

感谢

回答

1

Select()类仅适用于<select>标签元素。所以你不能在这里使用Select()类。你应该尝试如下: -

WebDriverWait wait = new WebDriverWait(driver, 10); 

//First click on dropdown to show options 
WebElement dropdown = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("select2-drop"))); 
dropdown.click(); 

//Now find desired option and click 
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//li[normalize-space(.) = 'Apples']"))).click(); 
+1

工作就像魅力。非常感谢。!!你能否介绍一下这部分代码。只是试图了解更多和抱歉,如果它是基本的......“。li [normalize-space(。) - 这个规范化空间是做什么的,为什么有点? – coolgokul

+0

它只是xpath函数,用来避免额外的一个元素的文本内容为空格,点意味着它只是匹配任何元素中的确切文本内容,无论元素内存在多少其他元素,更多详细信息请点击此链接https://www.w3.org/TR/ xpath /#function-normalize-space –

+0

@coolgokul要了解更多关于dot [请看这里](http://stackoverflow.com/questions/38240763/xpath-difference-between-dot-and-text)。谢谢 –

相关问题