2016-10-26 4 views
0

Ich versuche, eine eindeutige XPATH zu erstellen, um ein Kontrollkästchen Selenium in einer Tabelle auf einer Webseite zu aktivieren.Selen xpath - Alternative von text() um ein Element mit innerem Text zu finden?

Die HTML wie folgt aussieht:

<tr ng-repeat="item in tests "> 
    <td class="ng-binding"> 
     <span test: 'fa fa-cube greeniconcolor'}[item.type]"/> 
     <span ng-show="item.type !='test' && item.type !='testset'"> 
     Test     
     <div class="box-tools pull-right"> 
     <input type="checkbox" ng-model="selected_checkbox[$index]"/> 
     </div> 
    </td> 
</tr> 

Ich würde erwarten, dass ich eine XPATH zu haben wäre in der Lage, die wie folgt aussieht:

.//td[text()='Test']//input 

der Lage sein, auf das Kontrollkästchen klicken, aber das tut nicht arbeiten. Wenn ich es in contains ändere und das '.' Notation statt text() es funktioniert:

.//td[contains(., 'Test')]//input 

Allerdings, wenn ich .='Test' tun es nicht funktioniert. Der Grund, warum ich die Methode nicht verwenden kann, ist, dass die Tabelle auch Test2 enthält und auch ausgewählt ist.

Irgendein Rat betreffs, wie, wenn ich andere Elemente innerhalb des <tr> Etiketts habe, das ich die text() Methode nicht verwenden kann, würde geschätzt werden!

Antwort

1

Irgendwelche Ratschläge, wie kommen, wenn ich andere Elemente innerhalb des Tags habe Ich kann die text() Methode nicht verwenden würde geschätzt!

sollten Sie versuchen, normalize-space() Funktion von xpath verwendet, die zu Streifen verwendet wird, führt und Leerzeichen aus einem String Hinter ersetzt Sequenzen von Leerzeichen durch ein Leerzeichen, und gibt den resultierenden String wie folgt: -

.//td[normalize-space(.)='Test']//input 
+1

Danke! Das war genau das, was ich brauchte – user1691282

Verwandte Themen