页面上有一个 div 不可见,但有一些我想捕获的值。在其上调用 text 会返回一个空字符串。
如何在不处理原始 html 的情况下获取显示的值?无论文本在浏览器中的可见性如何,我是否可以强制 .text 返回实际值?
irb(main):1341:0> d.first.visible?
=> false
irb(main):1344:0> d.first.html
=> "<div class=\"day\">7</div>"
irb(main):1345:0> d.first.text
=> ""
PS:有很多很多div(页面缓存响应并相应地显示它们)。我考虑过更改页面中的所有显示:无或单击以使它们可见,但如果可能的话,我希望避免这种情况。
如果不可能,则更改所有显示的解决方案将不是首选的解决方法。
PPS:该死,我试图让可见的东西超载? Watir::Element 类中的方法始终返回 true,但这并没有达到目的。
irb(main):1502:0> d.first.visible?
=> true
irb(main):1504:0> d.first.text
=> ""
对于 Watir 的新版本,现在有一个Element#text_content
为您执行以下 JavaScript 的方法。
e = d.first
e.text_content
#=> "7"
对于旧版本的 Watir(原始答案):
您可以使用 JavaScript 来获取它。
e = d.first
browser.execute_script('return arguments[0].textContent', e)
#=> "7"
请注意,这仅适用于类似 Mozilla 的浏览器。对于类似 IE 的浏览器,您需要使用innerText
。不过,如果你使用的是 watir-classic,那就简单了d.first.innerText
(ie no execute_script
必需的)。
使用属性值:
事实证明,您可以通过使用来使其变得更简单attribute_value
方法。看起来它可以得到与javascript相同的属性值。
d.first.attribute_value('textContent')
#=> "7"
使用inner_html
如果元素只包含文本节点(即没有元素),也可以使用inner_html
:
d.first.inner_html
#=> "7"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)