通过find_element_by_xpath返回<li> WebElements列表

Jam*_*mes 1 xpath python-2.7 selenium-webdriver

所以我使用的是Selenium和Python 2.7的组合(如果重要的话,我所使用的浏览器是Firefox).我是XPath的新手,但对于获取WebElements似乎非常有用.

我有以下HTML文件,我正在解析:

<html>
  <head></head>
  <body>
    ..
    <div id="childItem">
      <ul>
        <li class="listItem"><img/><span>text1</span></li>
        <li class="listItem"><img/><span>text2</span></li>
        ...
        <li class="listItem"><img/><span>textN</span></li>
      </ul>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在我可以使用以下代码获取所有li元素的列表:

root  = element.find_element_by_xpath('..')
child = root.find_element_by_id('childDiv')
list  = child.find_elements_by_css_selector('div.childDiv > ul > li.listItem')
Run Code Online (Sandbox Code Playgroud)

我想知道如何在XPath语句中执行此操作.我尝试了一些法规,但最简单的是:

list  = child.find_element_by_xpath('li[@class="listItem"]')
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误:

selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"li[@class=\\"listItem\\"]"}';

因为我有一个解决方法(前三行)这对我来说并不重要,但我想知道我做错了什么.

Jus*_* Ko 5

你错过.//了xpath的开头:

list  = child.find_element_by_xpath('.//li[@class="listItem"]')
Run Code Online (Sandbox Code Playgroud)

.//装置将内的任何地方搜索child元素.