Maison > développement back-end > Tutoriel Python > Pourquoi mon Selenium WebDriverWait ne parvient-il pas à trouver des éléments dans une fenêtre nouvellement ouverte ?

Pourquoi mon Selenium WebDriverWait ne parvient-il pas à trouver des éléments dans une fenêtre nouvellement ouverte ?

Barbara Streisand
Libérer: 2024-12-21 19:30:11
original
143 Les gens l'ont consulté

Why is My Selenium WebDriverWait Failing to Find Elements in a Newly Opened Window?

WebDriverWait ne fonctionne pas comme prévu

Vous utilisez du sélénium pour extraire des données d'une page Web. La page contient un bouton "custom_cols" qui lance une fenêtre de sélection de colonnes. Le chargement de cette nouvelle fenêtre prend parfois plusieurs secondes (en particulier environ 5 secondes).

Pour gérer ce délai, vous avez utilisé WebDriverWait avec un délai de 20 secondes. Étrangement, il arrive parfois qu'il ne parvienne pas à localiser des éléments dans la nouvelle fenêtre, même si l'élément est affiché à l'écran. Ce problème se produit environ une fois toutes les dix tentatives.

Il est intéressant de noter que l'utilisation de WebDriverWait ailleurs dans votre code fonctionne comme prévu, en garantissant que les éléments sont visibles avant de cliquer dessus.

Votre requête porte sur la raison pour laquelle les éléments du nouveau Les fenêtres ne sont pas reconnues comme visibles malgré l'utilisation de WebDriverWait pour détecter leur visibilité.

Proposé Solution :

Le problème vient du fait que vous utilisez la méthode présence_of_element_located() de WebDriverWait au lieu de la méthode element_to_be_clickable() lorsque vous essayez de cliquer sur l'élément.

Pour résoudre ce problème , remplacez ce qui suit line :

myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
Copier après la connexion

avec :

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
Copier après la connexion

Comprendre les méthodes WebDriverWait :

Ce qui suit fournit des éclaircissements supplémentaires sur les trois méthodes mentionnées :

  1. presence_of_element_located : Vérifie la présence d'un élément sur le DOM de la page Web, quelle que soit sa visibilité ou son interactivité.
  2. visibility_of_element_located : Garantit qu'un élément est présent, visible et a des dimensions supérieures à 0.
  3. element_to_be_clickable : Garantit qu'un élément est visible, activé et interactif, le rendant disponible pour un clic réussi.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal