在webapp的HTML中,有以下代码
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
页面上实际显示的是显示时间的字符串 .
在Selenium Web Driver中,我有 WebElement
对象引用了 <input>
WebElement timeStamp = waitForElement(By.id("prettyTime"));
我想得到 WebElement
的值,换句话说,就是页面上打印的内容 . 我尝试了所有 WebElement
getters,并没有检索到用户看到的实际值 . 有帮助吗?谢谢 .
8 回答
这有点hacky,但它确实有效 .
我使用
JavascriptExecutor
并在HTML中添加了div
,并将div
中的文本更改为$('#prettyTime').val()
然后使用Selenium检索div
并获取其值 . 在测试了值的正确性后,我删除了刚刚创建的div .试试
element.getAttribute("value")
text
属性用于元素标记内的文本 . 对于输入元素,显示的文本不会被<input>
标记包装,而是在value
属性中 .注意:案件很重要 . 如果指定“值”,则会返回“null”值 . 这至少对C#来说是如此 .
你可以这样做:
这将为您提供在网页上显示的时间 .
用硒2,
我通常这样写:
要么
按照@ragzzy的回答我用
它工作得很好,不会改变DOM
如前所述,你可以做那样的事情
但正如您所看到的,您的元素必须具有
id
属性,并且页面上还有jquery .如果输入值由涉及某些延迟的脚本填充(例如AJAX调用),则需要等到输入已填充 . 例如 .
对于python绑定,它将是: