2017-07-02 3 views
0

Ich muss li Elemente auf der Website-Seite zählen. Elemente sind sichtbar und nicht im Rahmen.Blockinformationen erhalten

HTML-Code ist:

<ul class='uiList _10-2x _6kg'> 
<li class='_10-5x'>...</li> 
<li class=''>...</li> 

Ende usw.

Ich habe versucht, Elemente zu finden nächsten Wege mit:

xpath: count=len(browser.find_elements.by_xpath("//ul[@class='uiList _10-2x _6kg']/li")) 

Es funktioniert, aber ich habe nichts - [] (ohne len) und 0 mit len ​​

Klassenname:

browser.find_element_by_class_name("uiList _10-2x _6kg") 
count = browser.find_elements_by_tag_name('li') 
len(count) 

hier - konnte nicht Klassennamen

Mit li class finden:

len(browser.find_elements_by_class('_10-5x') 

Leeren Ergebnis - [] Gleich wie XPath

css_selector: Selektor ist nicht permament und Änderungen von Seitenauffrischung.

Bin ich falsch? Oder gibt es andere Möglichkeiten, es zu tun?

+0

Können Sie zeigen, was die volle XPath zu einem echten eigentlich gewünschten Elemente ** ** ist nach Ihrem Browser Debug-Modus (drücken Sie Taste F12 in Firefox oder Chrome, und es wird Debug-Modus starten)? –

Antwort

0

Wie pro vorgesehenem Stück HTML Code sehe ich keine ul mit class="ul class", aber ul mit class="uiList _10-2x _6kg"

Sie können versuchen, genauen Klassennamen Wert angeben:

len(browser.find_elements_by_css_selector('ul.uiList._10-2x._6kg>li')) 

oder durch partiellen Klassennamen:

len(browser.find_elements_by_xpath('//ul[starts-with(@class,"uiList")]/li')) 

Beachten Sie auch, dass Zielliste dynamisch generiert werden könnte y, so dass Sie explicit wait einige hinzufügen:

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

len(wait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//ul[starts-with(@class,"uiList")]/li'))))