2016-04-30 7 views
0

Selen mit Python 2.7 unter Windows 10 mit dem Chrome-Treiber (als ein Skript und von der Python REPL) findet ein Element durch partiellen Link-Text, und ich bin mir nicht sicher Warum. Wenn ich mir den Quellcode der fraglichen Webseite anschaue, gibt es nur eine Instanz von WO20 auf der gesamten Seite, und zwar in einem Link, aber Selen gibt no such element zurück.Selen/python - findet teilweise Link-Text

Hier ist ein Beispiel (die WO20 kommt kurz nach dem href):

<a id="resultTable:0:resultListTableColumnLink" name="resultTable:0:resultListTableColumnLink" href="detail.jsf?docId=WO2015102036&amp;recNum=1&amp;office=&amp;queryString=FP%3A%28JP2014005719%29&amp;prevFilter=&amp;sortOption=Pub+Date+Desc&amp;maxRec=3" target="_self"><span class="notranslate"> WO/2015/102036</span></a> 

Die Seite hat ein paar anderen Links, aber die, die ich brauche, ist das einzige mit der Zeichenkombination WO20, so in der Theorie Das sollte leicht zu identifizieren sein. Meine Vermutung ist, dass Selen dies nicht als Link erkennt, weshalb partial_link_text nicht funktioniert. Ich habe versucht, mit xpath (erfolgreich), aber das Problem ist, dass die n-te Link in der Tabelle zurückgibt, und die Links, die ich brauche (ich bin mehrere Dokumente verarbeiten) sind nicht in einer festen Position.

+1

können Sie Ihren Quellcode teilen ? – sousatg

+0

'elem = driver.find_element_by_xpath ('' '// * [@ id =" resultTabelle: 0: resultListTableColumnLink "]' '')' ... denke ich. Ich habe es einfach im Skript mit dem Vorschlag des anderen Beantworters ersetzt, also ist es weg. Mein ursprünglicher Code funktionierte, indem er ein Element identifizierte, aber nur nach Position in einer Tabelle und nicht nach dem Inhalt des Links. –

Antwort

2

Tatsächlich gibt es keinen Verbindungstext, der WO20 enthält! Ich denke, Sie verwechseln Link-Text mit href Attribut von <a> Element. Sie können Zielelement durch Link-Text/Teil Link-Text mit folgendem Code finden:

driver.find_element_by_link_text('WO/2015/102036') 

oder

driver.find_element_by_partial_link_text('WO/20') 

diese XPaths sollte auch anwendbar sein:

driver.find_element_by_xpath('//a[contains(@href, "WO20")]') 
driver.find_element_by_xpath('//a[contains(text(), "WO/20")]') 
+0

Ich kann die erste nicht verwenden, weil die Nummern der Dateien immer unterschiedlich sind (obwohl WO/20 immer gleich ist), aber die anderen drei funktionieren. Vielen Dank! –