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() < 4]
前三个)。
如果您正在寻找第一个div的第一个孩子:
//div[@id='container'][1]/*[1]
如果只有一个ID为的div,则您正在寻找第一个孩子:
//div[@id='container']/*[1]
等等。
以上是 Webdriver findElements通过xpath 的全部内容, 来源链接: utcz.com/qa/413929.html