Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何定位列表元素(Selenium)?_Java_List_Xpath_Selenium_Nosuchelementexception - Fatal编程技术网

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