我需要在网页上计算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)
此处 - 无法找到班级名称
使用li class:
len(browser.find_elements_by_class('_10-5x')
空结果 - []与Xpath相同
css_selector:选择器不是永久性的,也不会因页面刷新而改变。
我错了吗?或者还有其他方法吗?
答案 0 :(得分:0)
根据提供的HTML
代码段,我看不到ul
与class="ul class"
,ul
与class="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'))
另请注意,目标列表可以动态生成,因此您可以添加一些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'))))