如何使用Watir(Ruby)从非可见元素中读取文本?
发布时间:2020-12-17 03:30:45 所属栏目:百科 来源:网络整理
导读:页面上有一个div不可见,但有一些我想要捕获的值.在它上面调用文本会返回一个空字符串. 如何在不处理原始html的情况下显示值?无论浏览器中文本的可见性如何,我都可以强制.text返回实际值吗? irb(main):1341:0 d.first.visible?= falseirb(main):1344:0 d.fi
页面上有一个div不可见,但有一些我想要捕获的值.在它上面调用文本会返回一个空字符串.
如何在不处理原始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 => "" 解决方法
我认为你必须使用javascript来获得这个.
e = d.first browser.execute_script('return arguments[0].textContent',e) #=> "7" 请注意,这仅适用于类似Mozilla的浏览器.对于类似IE的浏览器,您需要使用innerText.虽然如果你使用watir-classic,它只是d.first.innerText(即不需要execute_script). 使用attribute_value: 事实证明,使用attribute_value方法可以使其更简单.似乎它可以获得与javascript相同的属性值. d.first.attribute_value('textContent') #=> "7" 使用inner_html 如果元素只包含文本节点(即没有元素),您还可以使用inner_html: d.first.inner_html #=> "7" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |