Python XPath-选择所有

Python XPath-选择所有,python,xpath,selenium,Python,Xpath,Selenium,元素无效 我有一些基本的selenium代码和一个性能良好的xpath表达式 xpath: /html/body/div/div/table[2]/tbody/tr/td/div/table/tbody/tr//td/div[5]/table/tbody/tr[2] 选择我感兴趣的部分,其中包含许多元素 但是,像这样附加“//p”: /html/body/div/div/table[2]/tbody/tr/td/div/table/tbody/tr//td/div[5]/table/tbody

元素无效 我有一些基本的selenium代码和一个性能良好的xpath表达式

xpath:

/html/body/div/div/table[2]/tbody/tr/td/div/table/tbody/tr//td/div[5]/table/tbody/tr[2]
选择我感兴趣的部分,其中包含许多元素

但是,像这样附加“//p”:

/html/body/div/div/table[2]/tbody/tr/td/div/table/tbody/tr//td/div[5]/table/tbody/tr[2]//p
不仅选择那些元素。相反,我最终得到的是一个元素

我显然缺少一些基本的东西。这是我的代码的一个示例:

#!/usr/bin/env python

from selenium import webdriver
from time import sleep


fp = webdriver.FirefoxProfile()

wd = webdriver.Firefox(firefox_profile=fp)

wd.get("http://someurl.html")


# appending //p here is the problem that finds only a single <a> element
elems = wd.find_element_by_xpath("/html/body/div/div/table[2]/tbody/tr/td/div/table/tbody/tr/td/div[5]/table/tbody/tr[2]//p")

print elems.get_attribute("innerHTML").encode("utf-8", 'ignore')

wd.close()
编辑:通过使用find_元素*s*_by_xpath而不是建议的find_元素来解决,谢谢Alexander Petrovich发现了这一点

不要使用这样的定位器。把它们缩短一点。类似于//table[@attr='value']/tbody/tr[2]//p 要选择多个元素,请使用find_elements_by_xpath方法,它将返回WebElement对象的列表 您将无法使用elems.get_属性。相反,您必须遍历列表

elems = wd.find_elements_by_xpath("/your/xpath")
for el in elems:
    print '\n' + el.get_attribute('innerHTML').encode("utf-8", 'ignore')

你在用什么网址?如果这个网址不相关,我不想透露。我可能错了,但如果我错了,我想知道原因。对不起,如果听起来很粗鲁:我的代码可以吗?谢谢!这些定位器是通过firefox自动生成的:@ReutSharabani我添加了一个如何缩短xpath的技巧。阅读更多。w3schools并不是最好的教程,但您可以从中获得一些有用的信息,其中MSDN有一个很好的xpath示例部分: