2011-04-19 74 views
3

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

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

这里的周围区域的源代码,我想点击:

<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> 

+0

页面HTML的样本可能有助于查看事件对事件做出的反应,如何识别其中的行或元素等。 – 2011-04-19 20:06:04

回答

5

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

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

这里的a script演示的行为,并here's修订后的表API的概述。

+1

该代码没有正常工作,但我将其更改为'browser.tr(:id =>“account_1”).fire_event(“onclick”)'并获得了期望的结果。谢谢! – Roderick 2011-04-20 13:18:23

3

一排是不是一个HTTP对象,通常会以一个点击响应。行内是否有东西需要点击链接,或者是使用事件处理来响应某个特定事件(如“onclick”或“onmousedown”)的行本身设置?

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

例如:

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

也许

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

(附录)AH现在我们有我们能看到的onclick处理程序以及由雅立指出,HTML,你是点击标题行(这在技术上是表中的第一行)要点击你想要的东西,你需要沿着

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 
+0

我尝试了这两种方法,使用onclick事件,因为这是显示的内容来源,但无济于事。 – Roderick 2011-04-19 20:28:30