Python Selenium:使用xpath查找对象属性

Python Selenium:使用xpath查找对象属性,python,xpath,selenium,Python,Xpath,Selenium,我是xpath新手,尝试使用xpath获取“value”的值: <input type="submit" value=" Search " class="long searchButton" style="width:190px !important;"> 我还没有弄清楚如何获得所需的值,如下所示: browser.find_elements_by_xpath("//*[@type='submit']/@value") 有点出乎意料地给出了一个错误: expression "

我是xpath新手,尝试使用xpath获取“value”的值:

<input type="submit" value="  Search  " class="long searchButton" style="width:190px !important;">
我还没有弄清楚如何获得所需的值,如下所示:

browser.find_elements_by_xpath("//*[@type='submit']/@value")
有点出乎意料地给出了一个错误:

expression "//*[@type=\'submit\']/@value" is: [object Attr]. It should be an element
有什么办法解决这个问题吗

编辑: xpath是正确的,但它“返回”一个obj属性,并且由于它不是元素,因此不允许使用它。我找不到像get\u attr\u by\u xpath()这样的方法,或者类似的方法。

应该是这样的

browser.find_elements_by_xpath("//*[@type='submit']/@value").text
browser.find_elements_by_xpath("//*[@type='submit']").get_attribute("value")
更新:

使用您使用的函数,我们只能提取元素,而不能提取其属性。要获取其属性,表达式应该如下所示

browser.find_elements_by_xpath("//*[@type='submit']/@value").text
browser.find_elements_by_xpath("//*[@type='submit']").get_attribute("value")
参考:

我最后使用了
get\u属性(“value”)
作为:

for i in browser.find_elements_by_xpath("//*[@type='submit']"):
    print i.get_attribute("value")

我当然知道这是2年前发布的,但我想补充一点被遗漏的内容。selenium提供了内置单词,可用于提取标记之间的文本或标记内的实际属性值

${XPATH}    xpath=(//td[@title='mytitle']/../td)[2]     
下面是一个简单的例子:

${THE_NAME}=       Get Text           ${XPATH} 

也许这是一个愚蠢的建议,但使用原始字符串是否可以修复:
r/*[@type='submit']/@value”
?您是否尝试过类似于
driver.find\u element\u by_xpath(“//a[contains(text(),'Search')]”的方法。单击()
当我使用lxml尝试xpath时,效果很好。我尝试了
lxml.html.fromstring.xpath(“/*[@type='submit']/@value”)
,而o/p是
['Search']
@hayde--原始字符串无法修复它。@RanRag--是的,xpath似乎是正确的,问题似乎在于“查找元素”,因为对象属性不是元素。但是,对于浏览器对象,似乎没有像get_attr_by_xpath或任何类似的方法。@Kaipa--您的更新也是我找到的最接近的方法。然而。如果使用元素,应该有“find_element”而不是元素或for循环。@Jayy:是的,它起作用了!你说得对。函数的作用是获取元素,而不是属性。所以,当我想要它返回一个属性时,我得到了一个错误。我只是把get_attribute()放在下面,然后完成。太棒了!我不想让您失望,但是您提供的代码示例在robotframework中(问题是python及其selenium绑定),它将返回节点的文本,而不是属性的值。为了得到这个值,在robotframework语法中,调用应该是
${attribute value}=get attribute value${the locator}@attribute_name