Selenium获取无title/value属性的readonly输入框文本值问题求助
获取只读Input字段的显示值
我来帮你搞定这个问题!你之前踩的坑其实挺常见的,咱们一步步分析:
为什么之前的方法无效?
text()方法对input元素完全不适用:input这类表单元素的显示值并不存储在元素的文本节点中,text()只能获取像<div>文本内容</div>这种标签内部的文本,所以自然拿不到值。getAttribute("title")当然会返回null,因为你的DOM元素里根本就没有title属性。
正确的解决方法
针对这种readonly的input字段,有两种靠谱的方式获取显示值:
方法1:使用getProperty("value")
Selenium的getProperty()方法是读取DOM对象当前的属性值,而不是HTML源码里的静态属性。即使你的HTML里没写value属性,只要页面上显示的值是存在于DOM的value属性中(通常是JS动态设置的),这个方法就能拿到:
string accNumber = driver.findElement(By.id("sumAccount")).getProperty("value");
方法2:通过JavaScript直接获取
如果第一种方法还是不行,你可以直接用JS执行来访问DOM元素的value属性,这种方式在处理动态渲染的场景时更稳定:
string accNumber = (String) ((JavascriptExecutor) driver).executeScript("return document.getElementById('sumAccount').value;");
这两种方法应该能帮你拿到页面上显示的"4567",优先试试第一种,一般就能解决问题啦!
内容的提问来源于stack exchange,提问作者Sahul
相关产品推荐
相关产品推荐

