我有一个包含元素的页面:
<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”属性的元素呢?
答案 0 :(得分:2)
正如你显然已经想到的那样,你并没有真正对[@value]真正感兴趣,因为这是一个“价值”。 DOM对象上的属性。相反,你正试图找到&#34; foo&#34;的价值。
上的属性。通常,DOM对象的属性不会暴露在DOM上。您需要查询JavaScript本身以查看这些对象及其属性。您可以通过the JavaScript executor完成此操作。我没有使用WebDriver的Python绑定,所以确切的语法/方法可能会有所不同 - 但方法通常是相同的。