我有一个包含以下HTML代码的html文档:
<!DOCTYPE html>
<html>
<head>
<title>page XYZ</title>
</head>
<body>
<p><b>bold text</b> some more text </p>
<p><b>1.</b> hello<br><b>2.</b> how<br><b>3.</b> do you do?</p><p>some more text in a paragraph.</p>
</body>
</html>
我需要编写XPath来打印带有文本的3个点,即
1. hello
2. how
3. do you do?
到目前为止,我已经尝试过这个:(但它不是打印文本)
List<WebElement> list = driver.findElements(By.xpath("//p/following-sibling::p/b"));
for (int i = 0; i < list.size(); i++) {
WebElement el = list.get(i);
String text = el.getText();
System.out.println(text);
}
请建议我。
答案 0 :(得分:1)
使用xpath "(//p[2])/text()"
,它将返回同级<p>
标记内的文字。使用xpath "(//p[2])/b"
以粗体显示数字1,2,3。
要获得所需的输出,您可以尝试以下操作:
List<WebElement> numberList = driver.findElements(By.xpath("(//p[2])/b"));
List<WebElement> textList = driver.findElements(By.xpath("(//p[2])/text()"));
for(int i = 0; i < textList.size() && i < numberList.size(); i++) {
System.out.println(numberList.get(i).getText() + " " + textList.get(i).getText());
}
答案 1 :(得分:0)
要仅选择文字,您应使用//p[2]/text()
如果你需要打印1. 2. 3.你应该使用p[2]/b
如果你需要选择两个你应该使用
//p[2]
为没有.findElements()
的字符串,然后在您的代码中将其拆分为列表