Heim > Artikel > Backend-Entwicklung > Wie kann man mit Python effektiv darauf warten, dass mehrere Elemente in Selenium geladen werden?
AJAX-geladene Listen können Herausforderungen bei der Sichtbarkeitsüberprüfung in Selenium darstellen. Um zuverlässig zu überprüfen, ob eine Liste mit mehreren Elementen vollständig geladen wurde, sollten Sie die folgenden Ansätze in Betracht ziehen:
Mit WebDriverWait können Sie die Bedingung „visibility_of_all_elements_located()“ induzieren:
<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>
Alternativ können Sie XPath verwenden:
<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>
Um auf eine bestimmte Anzahl von Elementen, z. B. 10, zu warten, verwenden Sie eine Lambda-Funktion :
<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>
Das obige ist der detaillierte Inhalt vonWie kann man mit Python effektiv darauf warten, dass mehrere Elemente in Selenium geladen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!