Webdriver findElements通过xpath

1)我正在做一个教程来展示xpath的findElements是如何工作的。我想知道为什么它返回<div>带有attribute元素之后的所有文本id=container

xpath的代码: By.xpath("//div[@id='container']

2)我应该如何修改代码,使其仅返回跟随父注释的第一个或前几个节点,例如第一个节点(如“ Home”),第一个节点(如Home,手动测试和自动化测试)。

感谢您的建议和帮助!

这是本教程的代码片段:

import java.util.List;

import org.junit.Test;

import org.junit.Before;

import org.junit.After;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

public class WD_findElements

{

@Test

public void test_byxpath(){

WebDriver driver = new FirefoxDriver();

try{

driver.get("http://www.hexbytes.com");

List<WebElement> elements = driver.findElements(By.xpath("//div[@id='container']"));

System.out.println("Test7 number of elements: " + elements.size());

for(WebElement ele : elements){

//ele.sendKeys("hexbyes");

System.out.println(ele.getText());

//System.out.println(ele.getAttribute("id"));

//System.out.println(ele.getTagName());

}

}

finally {

driver.close();

}

}//end of test_byxpath

public void xpathDemo2() {

WebDriver driver = new FirefoxDriver();

try{

driver.get("http://www.hexbytes.com");

WebElement webelement = driver.findElement(By.id("container"));

//matching single element with attribute value=container

System.out.println("The id value is: " + webelement.getAttribute("id"));

System.out.println("The tag name is: " + webelement.getTagName());

}

finally {

driver.close();

}

}//end of xpathDemo2

public void xpathDemo3() {

WebDriver driver = new FirefoxDriver();

try{

driver.get("http://www.hexbytes.com");

//find first child node of div element with attribute=container

List<WebElement> elements = driver.findElements(By.xpath("//div[@id='container']/*[1]"));

System.out.println("Test1 number of elements: " + elements.size());

for(WebElement ele : elements){

System.out.println(ele.getTagName());

System.out.println(ele.getAttribute("id"));

System.out.println("");

System.out.println("");

}

}

finally {

driver.close();

}

}//end of xpathDemo3

}

回答:

你的问题:

它不应该,我认为不会。它返回所有具有“ id”属性值等于“ containter”的div(及其所有子级)。但是,您要使用ele.getText()

Where getText 打印结果,其中getText将返回结果所有子级的所有文本内容。

获取此元素(包括子元素)的可见(即未被CSS隐藏),没有任何前导或尾随空格。

返回:

此元素的innerText。

这并不是很清楚您要查找的内容。例:

<p1> <div/> </p1 <p2/>

div的父级以下是p2。这将是:

 //div[@id='container'][1]/parent::*/following-sibling::*

或更短

 //div[@id='container'][1]/../following-sibling::*

如果您只在寻找第一个扩展区,则带“谓词”的表达式(例如[1]--第一个扩展区或[position() &lt; 4]前三个)。

如果您正在寻找第一个div的第一个孩子:

//div[@id='container'][1]/*[1]

如果只有一个ID为的div,则您正在寻找第一个孩子:

   //div[@id='container']/*[1]

等等。

以上是 Webdriver findElements通过xpath 的全部内容, 来源链接: utcz.com/qa/413929.html

回到顶部