我试图使用Watir来抓取一个包含AJAX生成的表的页面。随着表的每个级别的扩展,将插入其他嵌套表,并且展开链接将在一个级别中移动。级别数量并不总是相同。最终结果是这样的,一次异步加载一层:
<table>
Data Type 1
<table>
<table>
<table>
<a href="javascript:ajaxCall();"><img src="expand.gif" /></a>
</table>
</table>
</table>
</table>
<table>
Data Type 2
<table>
<table>
<table>
<a href="javascript:ajaxCall(1);"><img src="expand.gif" /></a>
<a href="javascript:ajaxCall(2);"><img src="expand.gif" /></a>
</table>
</table>
</table>
</table>
我想只与包含&#34;数据类型1的表进行交互。&#34;表ID是随机生成的(这是一个烦人的ASP.net应用程序),因此唯一要选择的是&#34;数据类型1.&#34;
因此,我有:
while browser.table(:text => /Type 1/).image(:src => "expand.gif").present?
links = browser.table(:text => /Type 1/).images(:src => "expand.gif")
links.each do |li|
li.click
end
end
这可以很好地扩展第一个嵌套表(expand.gif
直接位于包含选择器文本的table
元素内。但是,下一层表格不会扩展 - 显然,我的选择器不会进入子表。
如果我完全忽略了表选择器,代码将很乐意扩展页面上的每个嵌套表,直到它用完级别,但我只想要&#34;数据类型1.&#34;
有任何建议如何实现这一目标?提前谢谢。