2017-06-23 6 views
0

Ich habe folgende HTML Code finden:kann nicht ein Etikett mit Labelnamen enthält Methode von XPath

<li class="ng-scope" ng-repeat="option in RentTenantPreference.options"> 
    <label class="ng-binding"> 
     <input class="ng-scope ng-pristine ng-valid ng-touched" type="checkbox" checklist-value="option.id" ng-disabled="fieldLocks['RentPref']" ng-model="checked" checklist-model="formObj.occ_r" style=""/> 
     Family 
    </label> 
</li> 

Ich versuche, das Etikett mit //label[contains(text(),'Family')] XPath zu finden, aber nicht in der Lage, das zu tun.

+0

  • +0

    Bitte fügen Sie alle Komponenten in Ihre Frage und nicht in die Kommentare ein. Sie werden viel eher eine Antwort auf diese Weise bekommen. Außerdem können Sie die Code-Beispiel-Tags verwenden, um sie ordnungsgemäß zu formatieren. – chrisis

    Antwort

    1

    Versuchen Sie Folgendes:

    //label[contains(.,'Family')] 
    
    -1

    Es scheint, Sie sind die richtige xPath Verwendung unter Code- Hoffnung

    .//*[contains(text(),'Family')] 
    

    fehlt wird es Ihnen helfen.

    0

    Es ist etwas chaotisch mit dem html, weiß nicht, was noch, aber man kann einen anderen Ansatz versuchen, alle auswählen Label-Element und prüfen, ob ihre Texte enthält ‚Familie‘:

    label_elements = browser.find_elements_by_xpath('.//label') 
    for label_element in label_elements: 
        if 'Family' in label_element.text: 
         #dosomething with current element(label_element) 
    

    ich diese Hoffnung Workaround kann für Ihren Zweck arbeiten.

    0

    Versuchen einem der folgenden XPaths verwenden, wie der Text in der 'Input' Tag war

    // Label [Nachkomme :: input [enthält (Text(), 'Familie')]] (Aufenthalte in das Beschriftungsfeld selbst)

    oder

    // Label/input [enthält (Text(), 'Familie')] (im Inneren des Etiketts)

    Verwandte Themen