2010-07-09 7 views
0

J'essaie d'extraire toutes les valeurs de nom dans les champs de saisie en utilisant sélénium et perl. Une partie de la valeur, suffisante pour l'identifier, on le sait, le reste est inconnu:XPath boucle avec sélénium et perl

Cette XPath travaille à trouver tous les résultats pertinents:

//tr/td//input[contains(@name,'partofname')] 

Ainsi, en Perl:

my $xpath = qq(//tr/td//input[contains(\@name,'partofname')]); 
my $count = $sel->get_xpath_count($xpath); 

Fin, $ count donne un nombre approprié de correspondances.

Toutefois, comment extraire la valeur de l'attribut @name pour chaque correspondance?

Je comprends le principe est de construire une boucle:

foreach my $row (1 .. $count) { 
#extract here 
}; 

Cependant, je ne peux pas sembler construire une expression XPath qui travaillera pour trouver chaque ligne $ que l'expression correspond. Donc je pense que c'est l'expression xpath correcte pour obtenir chaque correspondance individuelle avec laquelle j'ai besoin d'aide.

Les pointeurs appréciés

Répondre

1

Essayez //tr/td/descendant::input[contains(@name,'partofname')][1]

Remplacer 1 avec votre compteur. Si ce n'est pas le cas, pouvez-vous ajouter du HTML à votre question afin que je puisse suggérer un meilleur XPath? .

+0

Salut - merci pour la suggestion, mais ce produit: XPath non valide [2]: // tr/td/descendant :: entrée [contient ( pour chaque nœud Le html est juste une table, – CColin

+0

Un extrait de votre HTML serait toujours utile –

+0

Quel extrait de taille minimum serait utile? La table est plutôt grande, comme c'est chaque rangée - serait une rangée avec plusieurs étiquettes , dont l'une contient les attributs recherchés, faites-le? – CColin

Questions connexes