2017-02-22 5 views
0

So bin ich derzeit Testautomatisierung in Visual Studio mit C# und Selen. Also mein Problem ist wie folgt. Das Element I Text von extrahieren möchten ist:Extrahieren Sie Text aus Element innerhalb einer Eingabeklasse

<input class="showroomprice pricehistory" type="text" data-showroomprice="100000" value="100.000" data-tooltip="true" data-html="true" data-original-title="<div class=&quot;price-history-popup&quot;> 
<table> 
    <thead> 
     <tr> 
      <th> 
       Datum 
      </th> 
      <th> 
       Showroom 
      </th> 
     </tr> 
    </thead> 
    <tr> 
     <td> 
      22 feb 2017 
     </td> 
     <td> 
      € 100.000 
     </td> 
    </tr> 
    <tr> 
     <td> 
      27 jul 2016 
     </td> 
     <td> 
      € 399.999 
     </td> 
    </tr> 
    <tr> 
     <td> 
      20 jan 2016 
     </td> 
     <td> 
      € 333.333 
     </td> 
    </tr> 
    <tr> 
     <td> 
      20 jan 2016 
     </td> 
     <td> 
      € 123 
     </td> 
    </tr> 
    <tr> 
     <td> 
      20 jan 2016 
     </td> 
     <td> 
      € 12.333 
     </td> 
    </tr> 
</table> 
</div>"> 

Nun, wie Sie sehen können, die div und Tabellenteil der Eingangsklasse sind (siehe „> nach dem div in letzter Zeile) Wenn ich finde Element. nach Klasse showroomprice pricehistory und versuchen, Text zu erhalten, bekomme ich einen Nullwert zurück. Ich kann Element durch div Klasse auch nicht lokalisieren.

So was ich brauche, muss ich eine Schnur mit dem ganzen Text verursachen, der innerhalb bemerkt wird die Tabelle. Irgendwelche Ideen?

Danke!

+1

Was ist das Element, aus dem Sie Text extrahieren möchten? "Eingabe" oder "Tabelle"? – Andersson

+0

Wird das gerenderte HTML tatsächlich wie oben angezeigt, mit der div + -Tabelle als String im Attribut 'original-data-title'? – Dillanm

Antwort

0

schreiben Sie a Schleife, um den Text von allen Zellen zu verketten, Beispiel Java-Code

import java.util.List; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.ie.InternetExplorerDriver; 

public class WebTableExample 
{ 
    public static void main(String[] args) 
    { 
     WebDriver driver = new InternetExplorerDriver(); 
     driver.get("test url");  
     string tableText; 
     WebElement table_element = driver.findElement(By.id("yourtable id")); 
     List<WebElement> tr_collection=table_element.findElements(By.xpath("id('testTable')/tbody/tr")); 

     int row_num,col_num; 
     row_num=1; 
     for(WebElement trElement : tr_collection) 
     { 
      List<WebElement> td_collection=trElement.findElements(By.xpath("td")); 

      col_num=1; 
      for(WebElement tdElement : td_collection) 
      { 
      // making all cells text to tableText 
       tableText = tableText + tdElement.getText(); 

       col_num++; 
      } 
      row_num++; 
     } 
    } 
} 
+0

Ich denke nicht, dass dies funktionieren wird, da die Tabelle tatsächlich Teil eines Strings als Teil des 'data-original-title' Attributs des' input' ist. – Dillanm

+0

In diesem Fall ist es einfacher, Attributwert zu extrahieren und alles zu ersetzen TD, TR-Tags mit Leerzeichen – Anil