Java 如何定位列表元素(Selenium)?
我有以下清单:Java 如何定位列表元素(Selenium)?,java,list,xpath,selenium,nosuchelementexception,Java,List,Xpath,Selenium,Nosuchelementexception,我有以下清单: <ul> <li> item1 is red </li> <li> item1 is blue </li> <li> item1 is white </li> </ul> 然而,我得到了:没有任何例外。。。 我可以使用CSS选择器,但我没有ul的id 我认为XPath应该是“//ul/li[1]”。在selenium中,第一项是1,而不是0。听着我知道这个答案不如另一个答案有效
<ul>
<li> item1 is red
</li>
<li> item1 is blue
</li>
<li> item1 is white
</li>
</ul>
然而,我得到了:没有任何例外。。。
我可以使用CSS选择器,但我没有ul的id我认为XPath应该是
“//ul/li[1]”
。在selenium中,第一项是1,而不是0。听着我知道这个答案不如另一个答案有效,但我认为它给出了结果
WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('li').first()");
String item = element.getText()
这将选择XML文档li
元素中的第一个元素,该元素是ul
元素的子元素
请注意表达式:
//ul/li[1]
选择作为其父元素ul
的第一个子元素的任何li
元素。因此,此表达式通常可以选择多个元素。以下是如何操作:
List<WebElement> items = driver.findElements(By.cssSelector("ul li"));
if ( items.size() > 0 ) {
for ( WebElement we: items ) {
System.out.println( we.getText() );
}
}
List items=driver.findElements(By.cssSelector(“ulli”);
如果(items.size()>0){
for(WebElement-we:items){
System.out.println(we.getText());
}
}
+1对于受过C语言培训的程序员来说,这是一个常见的问题。XPath从1开始计数,而不是从0开始。@fredrik的答案是正确的。我们不会对此进行否决表决,因为它会起作用,但您正在玩一个危险的游戏:您假设jQuery已加载。jQuery不是一个标准。
//ul/li[1]
List<WebElement> items = driver.findElements(By.cssSelector("ul li"));
if ( items.size() > 0 ) {
for ( WebElement we: items ) {
System.out.println( we.getText() );
}
}