簡體   English   中英

使用Java中的Selenium Webdriver獲取格式化的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM