2016-07-04 8 views
0

Ist es möglich zu wissen, ob ein Elternteil ein Kind mit einem bestimmten Klassennamen enthält? BeispielcodeSuchen nach untergeordneten Tags innerhalb des übergeordneten Tags

<div id="parent_tag"> 
    <div id="div1"> 
     <span>Title 1</span> 
    </div> 
    <div id="div2"> 
     <b>Title 2</b> 
    </div> 
    <div id="div3"> 
     <span>Title 3</span> 
    </div> 
</div> 

Ich versuche, „span-Tag“ nur für den Zugriff mit Titel 3. Ich weiß, dass ich es id durch Angabe tun kann. aber was, wenn ich es generisch (d. h. für alle Elemente) möchte. Also mein erster Ansatz sollte sein "Ich werde nach span tag in div suchen". aber ich weiß nicht, wie ich das machen soll? Bitte helfen Sie.

+1

Überprüfen Sie meine Antwort, aber ich bin mir nicht sicher, ob ich Sie richtig verstehe, wie Sie sagten "Kind mit bestimmten Klassennamen", aber in bereitgestellten 'HTML' gibt es keine Elemente mit bestimmten Klassen ... – Andersson

Antwort

1

Versuchen XPath:

//div/span[text()="Title 3"] 
0

mit JQuery Selektoren Spannweite in div3 wählen:

$("#div3 span") 

oder speziell das erste Wegstück Element innerhalb div3:

$("#div3 span:first") 
0

Hier ist die Idee, bekommen, was Sie brauchen

// Get Parent Element 
    WebElement parent = driver.findElement(By 
      .xpath("//div[@id='parent_tag']")); 

    // Get All children elements of the parent element 
    List<WebElement> children = parent.findElements(By.xpath("//*")); 

    // Init some based param for next usage 
    boolean checkClass = false; 
    String expectedClass = "Expected_Class"; 

    // Fetch each child element and check whether its text contains expected string. 
    for (WebElement child : children) {  
     if (child.getAttribute("class").contains(expectedClass)) { 
      checkClass = true; 
     } 
    } 

    if (checkClass) { 
     System.out 
       .println("We have at least one child has expected class: " 
         + expectedClass); 
    } 
    else System.out.println("We don't have any child has expected class: " 
         + expectedClass); 

wenn Sie den Text überprüfen möchten, könnten wir tun

if (child.getText().contains(expectedText)) {   
      checkResult = true; 
     } 
    } 

Hoffe, es hilft.