[英]Get formatted text with Selenium Webdriver in Java
使用getText()方法从以下HTML代码中提取文本无法正常工作。
HTML
<pre id="responseCommand"><code>RP/ABCDEFGHI/
1.TESTING/UI
2 PHONE NUMBER
3 SOME FREE TEXT</code></pre>
为了从代码标签中提取文本,Java代码如下:
WebDriverWait waitForElement = new WebDriverWait(driver, 20);
WebElement recoverText = waitForElement.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("pre[id='responseCommand'] code")));
recoverText= driver.findElement(By.cssSelector("pre[id='responseCommand'] code"));
String textStr = recoverText.getText();
System.out.println("Text extracted: \n" + textStr );
println的输出如下:
Text extracted:
RP/ABCDEFGHI/
1.TESTING/UI
其余的“ 2 PHONE NUMBER”和“ 3 SOME FREE TEXT”不显示。
*从.txt文件逐行读取文本,并在每行读取之后使用sendKeys(Keys.ENTER)。 因此,代码标记中的文本显示在多行上。
尽管有所有可用的文档,但我无法提取全部文本。
有什么想法吗?
干杯!
您可以尝试使用innerText
属性
WebElement recoverText = waitForElement.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("pre[id='responseCommand'] code")));
String textStr = recoverText.getAttribute("innerText");
我终于找到了为什么我只显示一半的文本。 显然,每次我做一个key.ENTER时,
<pre id="responseCommand">
创建后,包装到div标签中。 因此,对于输入的第一条TESTING / UI行
<div class="textResponse0">
<pre id="responseCommand">
<code>RP/NCE1A0955/
1.TESTING/UI</code>
</pre>
</div>
输入的第二行PHONE NUMBER,
<div class="textResponse1">
<pre id="responseCommand">
<code>RP/NCE1A0955/
1.TESTING/UI
2 PHONE NUMBER</code>
</pre>
</div>
等等...
我的getText()仅应用于第一个pre标签。 因此,没有其他线。
没有您的评论,我并没有发现这一点(inneHTML睁开了我的眼睛)
非常感谢你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.