Selenium XPath“[@value]”不匹配元素与值

时间:2014-01-14 17:43:02

标签: python selenium xpath

我有一个包含元素的页面:

<input id="foo"></input>

(通过Javascript)将value设置为“bar”。

如果我使用以下XPath语句(使用Python / Selenium):

self.browser.find_elements_by_xpath("//input[@id='foo']")

它返回我的元素,我甚至可以这样做:

self.browser.find_elements_by_xpath("//input[@id='foo']")[0].get_attribute("value")

然后返回u"bar"。但是,如果我尝试这样做:

self.browser.find_elements_by_xpath("//input[@value='bar']")

甚至只是:

self.browser.find_elements_by_xpath("//input[@value]")

我的元素不会被返回。

这对我有用的唯一方法是,如果我的Javascript代码设置“value”属性,而不是“value”属性(当我看到Firefox检查器中的元素没有显示“值”属性,这加强了这一理论。)

所以,我的问题是,如何选择具有“value”属性的元素呢?

1 个答案:

答案 0 :(得分:2)

正如你显然已经想到的那样,你并没有真正对[@value]真正感兴趣,因为这是一个“价值”。 DOM对象上的属性。相反,你正试图找到&#34; foo&#34;的价值。

上的属性

通常,DOM对象的属性不会暴露在DOM上。您需要查询JavaScript本身以查看这些对象及其属性。您可以通过the JavaScript executor完成此操作。我没有使用WebDriver的Python绑定,所以确切的语法/方法可能会有所不同 - 但方法通常是相同的。