我的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()
错误。
任何想法如何克服?
答案 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