2017-10-09 10 views
0

Je cours Python 3.6 sur un iMac (OS: Sierra). J'utilise ChromeDriver 2.33 et la dernière version du package Selenium (de PIPY). Je suis en train d'accéder (en utilisant find_element_by_xpath) les éléments de la colonne d'une ligne de tableau comme indiqué ci-dessous:python selenium chromedriver xpath "pas un tel élément"

HTML Code

Je peux accéder aux trois premières cellules (balises TH) intégrés dans la ligne (balise TR). Quand j'arrive à la 4ème cellule (balise TH) le driver chrome signale (via python) 'No such element'. J'attends 10s de secondes après le chargement de la page avant d'essayer d'accéder à l'élément (aussi, je peux excéder la cellule 1-3 pour cette ligne) donc ce n'est évidemment pas un problème de timing.

L'élément Web (cellule 4) est visible dans le navigateur Web. En outre, j'ai utilisé la fonction de recherche d'élément Web dans le développeur chrome pour vérifier le xpath (et il vérifie très bien). De toute évidence, le problème n'est pas que l'élément n'est pas visible.

Je me demande quel est le problème? Ou au moins, je voudrais une recommandation sur la façon de déboguer cela?


En réponse aux commentaires: J'utilise l'appel python suivant

CHROMEDRIVER.find_element_by_xpath ("// * [@ id =" mainContent_ugReservationGrid_tableGridParent "]/div 1/table/thead/tr [ 3]/th [INDEX] ") ' où' INDEX 'est ma variable de boucle .. 1-3 fonctionne bien mais quand la variable de la boucle arrive à 4, j'obtiens l'exception' No Such Element '.


Remplacée Chrome avec Firefox & geckodriver: Il semble être un problème avec l'interface Chrome. Firefox fonctionne comme prévu sans aucune autre modification.

+0

Quel est l'appel que vous utilisez pour obtenir les trois premières cellules? Pour déboguer, je commencerais par vérifier si vous êtes en mesure d'obtenir tous les éléments TR en utilisant find_elements_by_tag_name (ou tout ce que python utilise pour cet appel, j'utilise C#). Créez une fonction pour obtenir tous les éléments sur la page avec la balise TR et imprimez-les sur votre console pour vous assurer que tout est retourné et ensuite partir. – JOberloh

Répondre

0

Si vous ne rencontrez pas de problèmes de synchronisation en faisant référence aux autres cellules du tableau, il serait utile de valider davantage le xpath que vous utilisez pour l'élément que vous ne pouvez jamais atteindre.

Même si j'ai tendance à exécuter l'ensemble de mon automatisation principalement via Chrome, j'utiliserai occasionnellement Firefox avec le plugin FirePath pour choisir/valider des localisateurs sur une page. Ce plugin est particulièrement utile car il donnera toutes les correspondances pour un locator donné. Une raison pour laquelle l'automatisation peut échouer (ou du moins se comporter de façon imprévisible) est qu'un localisateur peut avoir plusieurs correspondances.