Maison  >  Article  >  développement back-end  >  Comment attendre efficacement le chargement de plusieurs éléments dans Selenium avec Python ?

Comment attendre efficacement le chargement de plusieurs éléments dans Selenium avec Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 23:52:30538parcourir

How to Effectively Wait for Multiple Elements to Load in Selenium with Python?

Python : attendre le chargement de plusieurs éléments

Les listes chargées en AJAX peuvent présenter des défis pour la vérification de la visibilité dans Selenium. Pour vérifier de manière fiable si une liste contenant plusieurs éléments est entièrement chargée, envisagez les approches suivantes :

Attente explicite avec WebDriverWait

En utilisant WebDriverWait, vous pouvez induire la condition visibilité_of_all_elements_located() :

<code class="python">elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul.ltr li[id^='t_b_'] > a[id^='t_a_'][href]")))</code>

Vous pouvez également utiliser XPath :

<code class="python">elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")))</code>

En attente d'un nombre spécifique d'éléments

Pour attendre un nombre spécifique d'éléments, tel que 10, utilisez une fonction lambda :

<code class="python">myLength = 9
WebDriverWait(driver, 20).until(lambda driver: len(driver.find_elements_by_xpath("//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")) > int(myLength))</code>
<code class="python">myLength = 10
WebDriverWait(driver, 20).until(lambda driver: len(driver.find_elements_by_xpath("//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")) == int(myLength))</code>

Notes supplémentaires

  • N'oubliez pas d'importer les packages Selenium nécessaires.
  • Assurez-vous que les localisateurs utilisés sont uniques et spécifiques à l'objet souhaité. éléments.
  • Envisagez d'explorer les discussions et les références fournies pour de plus amples informations.

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!

Déclaration:
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