python - Selenium XPath "[@value]"与值不匹配的元素

标签 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 代码设置“值”属性,而不是“值”属性(当我查看Firefox 检查器中的元素没有显示“值”属性,这强化了这一理论)。

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

最佳答案

您显然已经发现,您对 [@value] 并不真正感兴趣,它是 DOM 对象上的“值”属性。相反,您试图在 JavaScript 对象上查找“foo”属性 的值。

通常,JavaScript 对象的属性不会在 DOM 上公开。您需要向下查询 JavaScript 本身以查看这些对象及其属性。您可以通过 the JavaScript executor 做到这一点.我没有使用 WebDriver 的 Python 绑定(bind),因此确切的语法/方法可能会有所不同——但方法通常是相同的。

关于python - Selenium XPath "[@value]"与值不匹配的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120288/

相关文章:

python - 使用 Xpath 使用多个条件从 <head> 中的元标记中提取内容

xml - 具有默认命名空间的 XML 文件上的 XSLT。带有 'artificial' 前缀的 Xpath

java - 我在 Selenium 中的程序没有停止执行是什么?

键盘无法访问 Python Selenium 元素

xpath - 如何使用XPath选择所有空元素

python - Django:删除对象中的 m2m 关系

python - 在 Python 中使用 sorted()

python - 如何反转django feed url?

python - 如何使用time.Time()来控制射弹射速

java - 异常(org.openqa.selenium.NoSuchWindowException): using Selenium WebDriver with Java in Internet Explorer