Maison > développement back-end > Tutoriel Python > Comment utiliser EC.presence_of_element_located() de Selenium avec plusieurs noms de classe ?

Comment utiliser EC.presence_of_element_located() de Selenium avec plusieurs noms de classe ?

DDD
Libérer: 2024-12-06 08:05:12
original
665 Les gens l'ont consulté

How to Use Selenium's EC.presence_of_element_located() with Multiple Class Names?

Utilisation de EC.presence_of_element_located() de Selenium pour spécifier une classe

Lors du web scraping de pages HTML dynamiques, en utilisant WebDriverWait avec EC.presence_of_element_located () nous permet d'attendre qu'un élément particulier apparaisse avant récupérer des données. Généralement, nous spécifions les éléments par leurs identifiants. Cependant, dans certains scénarios, nous pouvons avoir besoin de spécifier des éléments par leurs classes.

Le code d'origine tente de localiser un élément par sa classe en utilisant EC.presence_of_element_located((By.class, "ng-binding ng- scope") ):

element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
Copier après la connexion

Cependant, cette syntaxe ne fonctionnera pas car elle ne respecte pas les règles de syntaxe du localisateur de WebDriver. La méthode By.class ne prend pas en charge plusieurs noms de classe comme argument.

Solution:

Pour résoudre ce problème, nous pouvons utiliser la présence_of_element_located( ) avec By.CSS_SELECTOR ou By.XPATH pour spécifier à la fois les attributs ID et classe comme suit :

Utilisation de CSS_SELECTOR :

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
Copier après la connexion

Utilisation de XPATH :

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
Copier après la connexion

En combinant l'ID et la classe attributs, nous pouvons localiser précisément l'élément souhaité même lorsque seule la classe est spécifiée.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal