Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取<;李>;an中的元素<;ol>;在Python中使用Selenium?_Python_Selenium_Selenium Webdriver - Fatal编程技术网

如何获取<;李>;an中的元素<;ol>;在Python中使用Selenium?

如何获取<;李>;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

我的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.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