使用watir-webdriver,如何单击表格行?

时间:2011-04-19 19:13:14

标签: internet-explorer-9 watir firefox4 watir-webdriver

我正在尝试将旧的watir脚本转换为使用watir-webdriver,因为这将(最终)支持IE9和Firefox 4. $browser.table_row(:id => "account_1").click就是我用来点击表格的第一行屏幕在watir / firewatir中,但是这个的API在watir-webdriver中被修改了。现在,代码是这样的:$browser.table(:class => "sortable")[0].click它应该抓住表的第一行然后单击它。它似乎是成功的,因为它继续执行代码,但实际上并没有单击该行。

有人可以解释在这种情况下正确的语法是什么吗?

以下是我要点击的区域的源代码:

<table class="sortable">
<thead>
    <tr id="">
        <th> </th>
        <th class="sort" > Name </th>
        <th class="sort" > Number </th>
    </tr>
</thead>
<tbody>
    <tr id="account_1" onclick=";$('timer').show();; new Ajax.Request('create_new_account', {asynchronous:false, evalScripts:true, onComplete:function(request){;$('timer').hide();initializeCustomEffects();}})">
        <td></td>
        <td class="sortTd">Test Account</td>
        <td class="sortTd">1</td>
    </tr>
</tbody>

2 个答案:

答案 0 :(得分:5)

您的代码正在查找表的第一行,该行位于<thead>内,并且没有onclick处理程序。试试这个:

browser.tr(:id => "account_1").click

以下是展示行为的a script,以及here's对修订后的表API的概述。

答案 1 :(得分:3)

A Row不是通常会响应点击的HTTP对象。行中是否有类似于您想要点击的链接,或者行本身是否使用事件处理来设置以响应特定事件,例如'onclick'或'onmousedown'?

如果是前者,请尝试实际点击行内的对象。如果后者尝试使用.fire_event方法和不同的事件。

例如:

browser.table(:class => "sortable")[0].fire_event("onmousedown") 

或者

browser.table(:class => "sortable").row(:index, 0).fire_event("onmousedown")

(附录)AH现在我们有了HTML,我们可以看到onclick处理程序所在的位置,正如Jarib指出的那样,你点击了标题行(技术上是表格的第一行)点击这个东西你想要的,你需要的东西是

browser.row(:id, "account_1").click
browser.row(:text, /Test Account/).click
browser.table(:class => "sortable").row(:index, 1).fire_event("onclick")

(除非您的意图是对表进行排序,在这种情况下,我怀疑您需要单击第一行(标题)行中的CELL,以便对该列上的表进行排序。

browser.cell(:text, ' Name ').click