【发布时间】:2012-09-16 17:46:59
【问题描述】:
我是 xpath 的新手,正在尝试使用 xpath 获取“值”的值:
<input type="submit" value=" Search " class="long searchButton" style="width:190px !important;">
虽然"type="submit" 很容易找到元素,例如:
browser.find_elements_by_xpath("//*[@type='submit']")
我一直无法弄清楚如何获得我需要的值,如:
browser.find_elements_by_xpath("//*[@type='submit']/@value")
有点出乎意料地给出了一个错误:
expression "//*[@type=\'submit\']/@value" is: [object Attr]. It should be an element
有什么办法解决这个问题吗?
编辑: xpath 是正确的,但它“返回”一个 obj 属性,并且因为它不是元素,所以不允许这样做。我找不到 get_attr_by_xpath() 之类的方法或类似的方法。
【问题讨论】:
-
也许这是一个愚蠢的建议,但使用原始字符串修复:
r"//*[@type='submit']/@value"? -
你试过类似
driver.find_element_by_xpath("//a[contains(text(),'Search')]").click() -
当我用 lxml 尝试你的 xpath 时,它工作得很好。我试过
lxml.html.fromstring(s).xpath("//*[@type='submit']/@value")并且o/p 是[' Search '] -
@hayde -- 原始字符串无法修复它。
-
@ RanRag -- 是的,xpath 似乎是正确的,问题似乎与“find_elemnts”有关,因为对象属性不是元素。但是,对于浏览器对象,似乎没有像 get_attr_by_xpath 这样的方法或任何类似的方法。