如何使用Python中的Selenium获取<ol>中<li>元素的长度?

时间:2017-10-31 14:44:56

标签: python selenium selenium-webdriver

我的HTML中有一个<ol>列表,如下所示:

<ol id="search-results">
  <li class="foo">-</li>
  <li class="foo">-</li>
  <li class="foo">-</li>
  <li class="foo">-</li>
</ol>

我需要做的是验证<ol>列表中是否包含<li>项,即。搜索查询会显示实际结果。我目前的代码如下:

search_field = driver.find_element(By.NAME, 'query')
search_field.send_keys('Foo')
search_field.submit()

results_list = driver.find_element(By.ID, 'search-results')
assert len(results_list) > 0

但是当我运行时出现TypeError: object of type 'FirefoxWebElement' has no len()错误。

任何想法如何克服?

2 个答案:

答案 0 :(得分:3)

driver.find_element(By.ID, 'search-results')

不返回列表而是返回元素。如果您希望列表包含所有 li ,则可以使用find_elements_by_xpath

尝试:

results_list = driver.find_elements_by_xpath("//ol[@id='search-results']/li[@class='foo']")
print(len(results_list))
assert len(results_list) > 0

答案 1 :(得分:3)

尝试以下方法:

search_field = driver.find_element(By.NAME, 'query')
search_field.send_keys('Foo')
search_field.submit()

results_list = driver.find_elements(By.CSS_SELECTOR, '#search-results > li')
assert len(results_list) > 0