2017-07-02 158 views
0

我需要在網頁上計算li元素。元素是可見的,不在框架中。獲取塊信息

HTML代碼:

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

末等

我試着用旁邊的方式找到的元素:

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

它的工作原理,但我得到了什麼 - [](無len)和0與len

class_name:

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

這裏 - 找不到類名

中使用鋰類:

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

空的結果 - []與Xpath的

css_selector:選擇不permament變化從頁面刷新。

我誤解了嗎?或者還有其他方法可以做到嗎?

+0

能告訴你什麼是完整的XPath實際上真正需要的元素** **是根據你的瀏覽器調試模式(按F12鍵在Firefox或Chrome,它會啓動調試模式)? –

回答

0

按提供一塊HTML代碼,我看不出有什麼ulclass="ul class",但ulclass="uiList _10-2x _6kg"

你可以嘗試指定確切的類名稱值:

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

或部分類別名稱:

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

還要注意,可以動態生成目標列表Y,這樣你就可以添加一些explicit wait

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'))))