gpt4 book ai didi

ruby - 如何使用 Watir (Ruby) 从不可见元素中读取文本?

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:29 24 4
gpt4 key购买 nike

页面上有一个 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(页面缓存响应并相应地显示它们)。我考虑过更改页面中的所有显示:无或单击以使其可见,但我希望尽可能避免这种情况。如果不可能,更改所有显示的解决方案 none 将是首选的解决方法。

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(即不需要 execute_script)。

使用 attribute_value:

事实证明,您可以使用 attribute_value 方法使其更简单。似乎它可以获得与javascript相同的属性值。

d.first.attribute_value('textContent')
#=> "7"

使用 inner_html

如果元素只包含文本节点(即没有元素),也可以使用inner_html:

d.first.inner_html
#=> "7"

关于ruby - 如何使用 Watir (Ruby) 从不可见元素中读取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14748645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com