2011-01-10 4 views
0
@FindBy(how = How.XPATH, 
     using = "//div[@class='dynamic-main-content'] 
        //div[label[text()='Number of At Fault Claim Free Years']] 
         /select") 
     private WebElement _faultClaimFreeYearsDropDown; 

In der tatsächlichen HTML gibt es einen Bruch in den Beschriftungstext. Wie soll ich den XPATH schreiben?brauchen Xpath-Ausdruck, der Bruch in der Bezeichnung enthält

+1

Können Sie HTML-Beispiel bereitstellen? – Flack

+1

@ user569254: Wenn mit "break" ein "br" -Element gemeint ist, dann gibt es keinen ** text node ** mit dem String-Wert "Anzahl der fehlerfreien Jahre". Denkst du nicht? –

Antwort

1

Auch don Verwenden Sie [text()='the text'] nicht, verwenden Sie [normalize-space(.)='the text']. Die Verwendung von . anstatt text() macht Ihren Code resistent gegenüber Dingen wie Kommentaren (oder Elementmarkierungen), die in dem Text erscheinen, den Sie abgleichen.

+0

Vielen Dank, das funktioniert wie Magie und gibt mir viele neue Ideen. – Maalamaal

0

Wenn es einen Zeilenumbruch (Carriage Return und/oder Zeilenvorschub) oder zusätzliche Leerzeichen in der Label-Text können Sie normalize-space() auf die label verwenden ‚s text():

//div[@class='dynamic-main-content']//div[label[normalize-space(.)='Number of At Fault Claim Free Years']]/select

+0

// div [@ klasse = 'dynamic-main-content'] // div [label [normalize-space (text()) = 'Anzahl der fehlerfreien Jahre']/select - das geht hier nicht . Ich versuche, es mit Hilfe von View Xpather zu chk und es zeigt mir keine Ergebnisse – Maalamaal

+0

Es wäre hilfreich, eine Probe Ihres HTML zu haben. Es ist schwer, dir zu sagen, warum, wenn wir nicht wissen, wofür wir uns entscheiden. Die von Ihnen bereitgestellte XPATH könnte neben den Zeilenumbrüchen noch weitere Probleme haben. Wenn Sie die Zeilenumbrüche anpassen, bleiben diese Probleme bestehen. –

Verwandte Themen