Ruby 使用Watir在嵌套表中选择图像

Ruby 使用Watir在嵌套表中选择图像,ruby,watir,Ruby,Watir,我试图使用Watir来创建一个包含AJAX生成的表的页面。展开表的每个级别时,将插入其他嵌套表,展开链接将在一个级别中移动。级别的数量并不总是相同的。最终结果如下,一次异步加载一层: <table> Data Type 1 <table> <table> <table> <a href="javascript:ajaxCall();"><img

我试图使用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>
这可以很好地扩展第一个嵌套表(将
expand.gif
直接放在包含选择器文本的
table
元素中)。但是,下一层表不会扩展——显然,我的选择器不会进入子表

如果我完全不使用表选择器,代码将很高兴地扩展页面上的每个嵌套表,直到它超出级别,但我只需要“数据类型1”


有什么建议吗?提前谢谢。

您使用的是什么版本的watir?如果您在其中添加一些调试代码,例如
put“链接数为:#{links.size}”
这可能有助于了解发生了什么。另一件事是,如果这些扩展链接是动态创建的,您可能需要在while循环结束之前稍作休息,比如半秒钟左右,以便给客户端代码一些时间来呈现链接或使其可见。一旦扩展,HTML会是什么样子类型1表-即嵌套表的外观如何?
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