如何获取<;李>;an中的元素<;ol>;在Python中使用Selenium?
我的HTML中有一个如何获取<;李>;an中的元素<;ol>;在Python中使用Selenium?,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我的HTML中有一个列表,如下所示: <ol id="search-results"> <li class="foo">-</li> <li class="foo">-</li> <li class="foo">-</li> <li class="foo">-</li> </ol> search_field = driver.find_element(By.N
列表,如下所示:
<ol id="search-results">
<li class="foo">-</li>
<li class="foo">-</li>
<li class="foo">-</li>
<li class="foo">-</li>
</ol>
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
但是我得到了TypeError:FirefoxWebElement类型的对象在我运行它时没有len()
错误
有什么办法克服这个问题吗?你的
driver.find_element(By.ID, 'search-results')
不返回列表,而是返回元素。如果希望列表包含所有li,可以使用find\u elements\u by\u xpath
尝试:
results_list = driver.find_elements_by_xpath("//ol[@id='search-results']/li[@class='foo']")
print(len(results_list))
assert len(results_list) > 0
请尝试以下操作:
<ol id="search-results">
<li class="foo">-</li>
<li class="foo">-</li>
<li class="foo">-</li>
<li class="foo">-</li>
</ol>
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
这不是仍然只选择
ol
元素吗?这可能应该是By.CSS_SELECTOR',#搜索结果>li'
这个也可以,谢谢!现在我只需要决定哪种方法最有效。谢谢你的评论@很乐意帮忙!如果此答案或任何其他答案解决了您的问题,请将其标记为已接受:stackoverflow.com/help/someone-answers