2016-08-08 1 views
0

Ich habe viele Tabellen auf dem gleichen Bildschirm. Und ich brauche tex zu nehmen von nur einer davon Einfaches Beispiel: Tabelle: TelefonWie nehme ich Informationen aus einer bestimmten Anzahl von Elementen mit demselben Klassennamen?

div id="phone_type" type-id="pass" class="panel panel-default sort_table"> 
     <div class="panel-heading"> 
     <h3 class="panel-title">PHONE</h3> 
     </div> 
     <ul class="list-group ui-sortable"> 
       <li class="list-group-item ui-sortable-handle" id="pass"> 
     <div class="row"> 
     <div class="col-md-8 col-xs-8 increase_padding">Home</div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" href="pass">Edit</a> 
     </div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" rel="nofollow" data-method="delete" href="pass">Delete</a> 
     </div> 
     </div> 
    </li> 
      <li class="list-group-item ui-sortable-handle" id="pass"> 
     <div class="row"> 
     <div class="col-md-8 col-xs-8 increase_padding">Work</div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" href="pass">Edit</a> 
     </div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" rel="nofollow" data-method="delete" href="pass">Delete</a> 
     </div> 
     </div> 
    </li> 
     </ul> 

    </form> 
     </div> 
    </div> 

Tabelle: Condo

<div id="condo_type" type-id="pass" class="panel panel-default sort_table"> 
     <div class="panel-heading"> 
     <h3 class="panel-title">CONDO</h3> 
     </div> 
     <ul class="list-group ui-sortable"> 
       <li class="list-group-item ui-sortable-handle" id="pass"> 
     <div class="row"> 
     <div class="col-md-8 col-xs-8 increase_padding">Limited</div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" href="pass">Edit</a> 
     </div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" rel="nofollow" data-method="delete" href="pass">Delete</a> 
     </div> 
     </div> 
    </li> 
      <li class="list-group-item ui-sortable-handle" id="pass"> 
     <div class="row"> 
     <div class="col-md-8 col-xs-8 increase_padding">Free</div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" href="pass">Edit</a> 
     </div> 
     <div class="col-md-2 col-xs-2 text-center"> 
      <a data-remote="true" rel="nofollow" data-method="delete" href="pass">Delete</a> 
     </div> 
     </div> 
    </li> 
     </ul> 
</form> 
    </div> 
</div> 

und ich brauche Text von col-md-8 col-xs-8 increase_padding

zu nehmen, aber die Problem ist, dass wenn ich benutze:

table_content = driver.find_elements_by_css_selector('.col-md-8.col-xs-8.increase_padding') 

es nimmt auch Informationen aus Tabellen, die ich derzeit nicht brauche. Aber ich muss Text nur von einer bestimmten Tabelle nehmen. Diese Tabellen sind dynamisch, also kann ich nicht bestimmte Menge von

table_content 

und hängen Sie ihn an eine andere Liste nehmen. Ist es eine Möglichkeit, an bestimmte Tabellen zu adressieren und mit dem äußeren HTML zu arbeiten?

Antwort

4

Machen Sie einfach kontextspezifische Suchanfragen. Z.B. Wenn Sie dieses Element aus einer „Telefontyp“ Tabelle benötigen:

phone_type = driver.find_element_by_id("phone_type") 
print(phone_type.find_element_by_css_selector('.col-md-8.col-xs-8.increase_padding').text) 

Oder in einem Rutsch:

print(driver.find_element_by_css_selector('#phone_type .col-md-8.col-xs-8.increase_padding').text) 
+0

i gelöst bereits mit regex, aber Ihre Lösung ist noch besser. Ich wusste nicht, dass der Treiber Jquery-Befehle versteht. Danke vielmals! –

Verwandte Themen