我想在隐藏visibiility属性时检索隐藏文本:
starting lock
After locking index is: 100
myMap.size()=0
我试过了:
<div id = "tt52433002" class="yui-module yui-overlay yui-tt yui-overlay-hidden" style="z-index: 2; visibility: hidden;">
<div class="bd">Associated with the domain : testci20160503105556.com</div>
</div>
和
browser.hidden(:class, 'bd').text
但是我收到了这个错误:
browser.hidden(:class, 'bd').value
答案 0 :(得分:1)
Watir旨在像用户一样行事。因此,如果用户无法在元素中看到文本,那么Watir将不会返回元素的文本。
此外,您要查找的元素是div
而不是hidden
。
如果您需要文本,可以这样做:
browser.div(class: 'bd').inner_html
进行JavaScript调用以提供结果。
这有效:
browser.div.attribute_value('id') => tt52433002
就像这样:
browser.div(class: 'bd').inner_html[/testci\d{14}/] => testci20160503105556
答案 1 :(得分:0)
首先要做的事情。该错误表示Watir无法使用您指定的条件查找元素。这意味着要么在DOM中的任何地方都不存在这样的东西,要么它可能在框架内。
由于您想要的元素是div,那么您应该使用.div
方法来访问它
browser.div(:class => 'bd') #finds first matching div
如果该类名不是非常独特,则可能会出现第二个问题。除非您指定其他参数,例如索引,或者div可能包含的部分文本,否则您可能找不到要查找的div。一个快速的调试技巧(我喜欢从IRB做)是获取匹配的div的集合并检查大小
div_count = browser.divs(:class => 'bd').size
puts "there are #{divcount} divs of class bd in the dom"
如果计数超过1,那么您可能需要更改选择方式以确保获得正确的计数。例如
browser.div(:class => 'bd', :text => /Associated with the domain/)
如果计数为零,则检查帧
frame_count = browser.frames.size
iframe_count = browser.iframes.size
如果有框架,你必须告诉watir在div的框架内查看,如果有多个框架,那么请确保指定正确的框架
browser.frame.div(:class => 'bd') #looks for div inside first frame
一旦你确定你拥有正确的div,那么你应该能够使用像.text
这样的方法或者使用另一个答案.inner_html
来获取div的内容。