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)))
avec :
myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
Comprendre les méthodes WebDriverWait :
Ce qui suit fournit des éclaircissements supplémentaires sur les trois méthodes mentionnées :
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!