1
因此,我使用了Selenium和Python 2.7的组合(并且如果问题重大,我使用的浏览器是Firefox)。我是XPath新手,但对于获取WebElements看起来非常有用。通过find_element_by_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>
现在我可以使用下面的代码来获取所有的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')
我想知道我如何在XPath语句中执行此操作。我已经尝试了一些statments但最简单的就是:
list = child.find_element_by_xpath('li[@class="listItem"]')
但我总是最后得到的错误:
selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"li[@class=\\"listItem\\"]"}';
,因为我有一个变通(前三行)这对我来说并不重要,但我想知道我做错了什么。
所以''.''是当前元素,那么''//''意味着它的任何孩子? – James
是的。请注意,如果你只是'''(即没有'.'),xpath将搜索页面上的任何地方,包括那些不是'child'的后代的地方。 –
这是一个巨大的帮助。谢谢! – James