【发布时间】:2013-02-07 10:18:51
【问题描述】:
页面上有一个不可见的 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(页面正在缓存响应并相应地显示它们)。我考虑更改页面中的所有 display:none 或单击以使它们可见,但如果可能的话,我希望避免这种情况。 如果不可能,更改所有显示的解决方案 none 将是首选的解决方法。
PPS:该死,我试图超载可见的? Watir::Element 类中的方法总是返回 true,但这并没有成功。
irb(main):1502:0> d.first.visible?
=> true
irb(main):1504:0> d.first.text
=> ""
【问题讨论】:
-
您使用的是 watir-classic、watir-webdriver 还是两者都使用?虽然两种宝石的行为相同,但我认为解决方法会有所不同。
-
gem 'watir-webdriver' 使用火狐
-
解析那个 HTML 怎么样?
-
这就是我所做的,但是将 HTML 语法知识传播给这个 gem 的用户是不正确的。更不用说使用正则表达式的维护工作了。该库应该真的有类似 innerHtml 的东西,不应该关心可见与否,因为我可以自己查询。 text/value 函数有一些不应该存在的额外内置智能。
-
@Jeremy 我同意,也许@ŽeljkoFilipin 会知道更多.. 正则表达式? stackoverflow.com/q/1732348/1136008 使用 f.e. Nokogiri:
value = Nokogiri::HTML("<div class=\"day\">7</div>").text # => "7"
标签: ruby watir watir-webdriver