2017-07-02 159 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'))))