2017-10-04 1 views
-1

Text aus xhtml

<div> 
 
    <fieldset> 
 
    <legend class="lheader">Section Information:</legend> 
 
    <span id="lblSectionInfo"> 
 
     Name: 
 
     <font style="font-weight:normal">rr</font> 
 
     <br> 
 
     Type: 
 
     <font style="font-weight:normal">Section Type  </font> 
 
     Section List: 
 
     <font style="font-weight:normal"> \t Yes  </font> 
 
     Status: 
 
     <font style="font-weight:normal"> 
 
     Section: 
 
     <font style="font-weight:normal">Section Condition</font> 
 
     <br> 
 
    </span> 
 
    </fieldset> 
 
</div>

Ich habe bekommen den Text aus dem obigen Abschnitt Informationsbereich des Bildschirms zu erhalten. Ich versuchte getText() und es gibt leere Zeile, versuchte getAttribute("innerText") und es gibt N/A, versuchte getAttribute("innerHTML") und es gibt N/A

nicht sicher, wie ich den vollständigen Text oder einzelnen Test erhalten kann z.B. Der Abschnittsname sollte den Textabschnitt "RR" usw. zurückgeben. Der von mir verwendete Xpath ist korrekt. Jede Hilfe wird wirklich geschätzt. Fyi, ich benutze Xpath unten, um den Text zu bekommen.

//div[@id = 'TestView5']//span[@id = 'lblSectionInfo'] 

Mein Xpath ist richtig, wie ich bin in der Lage den gesamten Text auf diesem Abschnitt zu markieren, wenn es von Selenium IDE verwenden.

+0

Es gibt keine schreibgeschützten Elemente in HTML. Bitte zeigen Sie die Anweisungen vollständig an. – mplungjan

+0

Was leiten Sie an 'getText()' weiter? Was ist dein 'xpath' Selektor? –

+0

Ich hoffe, dies wird Ihnen helfen https://www.w3schools.com/xml/dom_element.asp – Anand

Antwort

1

Es ist ziemlich schwierig, diese Felder zu trennen, da sie sich unter demselben Spannungsknoten befinden. Ich kann zwei Problemumgehungen sehen.
1. Verwenden Sie den Index <font> Knoten als Anker.

Name: "//span[@id='lblSectionInfo']/font[1]" 
Type: "//span[@id='lblSectionInfo']/font[2]" 
Section List: "//span[@id='lblSectionInfo']/font[3]" 


2. Verwenden Sie JavaScript, um die Textknoten zu finden Feldnamen zu bekommen, und dann Selen verwenden, um die <font> Knoten zu finden, um ihre Werte zu erhalten. Schließlich, ordnen Sie sie zusammen.

function getTextNode(rootNode) { 
    var nodes = rootNode.childNodes; 
    var fieldNames = []; 
    var count=0; 
    for (var i = 0; i < nodes.length; i++) { 
     if ((nodes[i].nodeType == Node.TEXT_NODE)) { 
      if(nodes[i].textContent.trim().indexOf(':')>0) { 
       let text = nodes[i].textContent.trim(); 
       fieldNames[count] = text.substring(0,text.length-1); 
      }   
     } 
    } 
    return fieldNames; 
} 
+0

Der erste Workaround funktioniert perfekt für mich. Thnx Buaban. – reena