索引硒返回的结果

时间:2009-12-17 14:40:07

标签: python xpath selenium

我尝试索引xpath返回的结果。例如:

xpath = '//a[@id="someID"]'

可以返回一些结果。我想得到一份清单。我以为这样做:

numOfResults = sel.get_xpath_count(xpath)
l = []
for i in range(1,numOfResults+1):
   l.append(sel.get_text('(%s)[%d]'%(xpath, i)))

会起作用,因为使用firefox的Xpath检查程序做类似的工作:

(//a[@id='someID'])[2]

返回第二个结果。

为什么行为会有所不同以及如何用硒做这样的事情 感谢

3 个答案:

答案 0 :(得分:2)

您可以尝试xpath /html/descendant::a[@id="someID"]您可以将/html替换为您的链接的祖先,例如id('content')。然后,您应该可以使用[1][2]

找到各个链接

来自http://www.w3.org/TR/xpath#path-abbrev的XPath TR:

  

注意:位置路径//para[1]与位置路径/descendant::para[1]的含义不同。后者选择第一个后代para元素;前者选择所有后代的para元素,这些元素是他们父母的第一个孩子。

答案 1 :(得分:1)

答案是你需要告诉selenium你正在使用xpath:

numOfResults = sel.get_xpath_count(xpath)
l = []
for i in range(1,numOfResults+1):
   l.append(sel.get_text(xpath='(%s)[%d]'%(xpath, i)))

答案 2 :(得分:0)

在Selenium中,你通常没有额外的括号,所以你的循环看起来像下面的

numOfResults = sel.get_xpath_count(xpath)
l = []
for i in range(1,numOfResults+1):
   l.append(sel.get_text('%s[%d]'%(xpath, i)))

这将在Selenium中生成有效的XPath,如//a[@id='someID'][2]