Python xpath:元素中的元素

Python xpath:元素中的元素,python,xml,selenium,xpath,Python,Xml,Selenium,Xpath,我需要一个包含ListArticlesh2中所有a元素的列表,以及python和selenium 我试过类似的东西 results = driver.find_element_by_xpath("//*[@id='ListArticles']/h2/a") 但它不起作用。显示表达式的第一部分,即/*[@id='ListArticles']到达我需要的小节,但是它没有得到ListArticles中的h2列表,因此,它也无法到达h2中的a链接 非常感谢您的帮助 应该是: "id('ListArti

我需要一个包含
ListArticles
h2
中所有
a
元素的列表,以及python和selenium

我试过类似的东西

results = driver.find_element_by_xpath("//*[@id='ListArticles']/h2/a")
但它不起作用。显示表达式的第一部分,即
/*[@id='ListArticles']
到达我需要的小节,但是它没有得到
ListArticles
中的
h2
列表,因此,它也无法到达
h2
中的
a
链接

非常感谢您的帮助

应该是:

"id('ListArticles')//h2/a"
您的
xpath
仅获取
h2
标记,这些标记是带有
id=ListArticles
的标记的直接子标记,为此,您使用
/
,同时使用
/
获取每个后代。

而不是此xpath

//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a
使用这个XPath

//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a
说明
h2
元素的额外
div
父元素

但是,请注意,
h3
元素下也有
a
元素。要获取它们,并绕过任何中间的
div
元素,您可以使用这个XPath

//*[@id='ListArticles']/h2/a
//div[@id='ListArticles']/div/h2/a
//div[@id='ListArticles']//a

要获取目标
div

下的所有子代
a
元素,而不考虑中间元素,在本例中,您不需要使用XPath。在我看来,您应该更喜欢CSS选择器,因为它们创建起来不那么复杂,因此更易于阅读和维护。它们还可以更好地跨浏览器支持,速度更快

在这种情况下,CSS选择器将是
#ListArticles h2>a
#
表示一个ID。空格相当于XPath中的
/
,它表示任何子体。
在XPath中相当于
/
,它只表示子代/直系后代

下面是一些CSS选择器参考,可以帮助您了解CSS选择器