Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
通过按xpath查找元素返回webelement的列表_Xpath_Python 2.7_Selenium Webdriver - Fatal编程技术网

通过按xpath查找元素返回webelement的列表

通过按xpath查找元素返回webelement的列表,xpath,python-2.7,selenium-webdriver,Xpath,Python 2.7,Selenium Webdriver,因此,我使用的是Selenium和Python2.7的组合,如果有关系的话,我使用的浏览器是Firefox。我不熟悉XPath,但它对于获取Web元素似乎非常有用 我正在解析以下HTML文件: <html> <head></head> <body> .. <div id="childItem"> <ul> <li class="listItem"><img

因此,我使用的是Selenium和Python2.7的组合,如果有关系的话,我使用的浏览器是Firefox。我不熟悉XPath,但它对于获取Web元素似乎非常有用

我正在解析以下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>
我想知道如何在XPath语句中实现这一点。我已经尝试了一些说法,但最简单的是:

list  = child.find_element_by_xpath('li[@class="listItem"]')
但我最终总是会出错:

selenium.common.exceptions.NoSuchElementException:Message:u'无法定位元素:{method:xpath,选择器:li[@class=\\listItem\\]}'

由于我在前三行做了一些工作,这对我来说并不重要,但我想知道我做错了什么。

您缺少了//在xpath的开头:

list  = child.find_element_by_xpath('.//li[@class="listItem"]')
//表示在子元素中的任何位置进行搜索。

您缺少//在xpath的开头:

list  = child.find_element_by_xpath('.//li[@class="listItem"]')

//表示搜索子元素中的任何位置。

so。那么当前元素//是否表示它的子元素?是的。请注意,如果只执行//ie而不使用,xpath将搜索页面上的任何位置,包括那些不是child的后代的位置。这是一个巨大的帮助。谢谢所以那么当前元素//是否表示它的子元素?是的。请注意,如果只执行//ie而不使用,xpath将搜索页面上的任何位置,包括那些不是child的后代的位置。这是一个巨大的帮助。谢谢