2011-10-10 3 views
1

Quelqu'un peut-il m'aider à faire fonctionner ce code? J'ai plusieurs champs choisis et je veux seulement le dernier dans ma variable.xPath dernier élément de sélection

variable = browser.elements_by_xpath('//div[@class="nested-field"]//select[last()] 

Merci!

+0

entrée de l'échantillon Fournir. –

Répondre

0

est l'attribut de classe une correspondance exacte? si la marque est jusqu'à ce que

<div class="nested-field other"> 
... 

alors vous aurez soit par correspondance la classe exacte ou utiliser XPath contient.

3

Ceci est une FAQ: L'opérateur [] XPath a une priorité plus élevée (priorité) que le // pseudo-opérateur. C'est pourquoi les crochets doivent être utilisés pour modifier les priorités de l'opérateur par défaut. Il y a au moins plusieurs questions similaires avec de bonnes explications - cherchez-les et lisez et comprenez.

Au lieu de:

//div[@class="nested-field"]//select[last()] 

Utilisation:

(//div[@class="nested-field"]//select)[last()] 
+0

Je ne comprends pas pourquoi // div [@ class = "nested-field"] // select ne correspond à rien. – pguardiario

+0

@pguardiario: Pas "match" mais "select". '// div [@ class =" nested-field "] // select' sélectionne tout élément' select' qui est un descendant de tout élément 'div', dont l'attribut' class' a la valeur de '" nested-field " '. –

+0

Je suppose que ma question est pourquoi est-il // select au lieu de/select? – pguardiario

Questions connexes