【问题标题】:Onclick event using fireevent() function is not working in selenium IDE使用 fireevent() 函数的 Onclick 事件在 selenium IDE 中不起作用
【发布时间】:2012-09-29 15:12:59
【问题描述】:
<div id="member_sel_div" style="">
    <table class="dataTable" width="100%" cellspacing="0" cellpadding="0" border="0" summary="">
        <tbody>
               <tr class="heding">
                   <tr class="odd">
                           <td valign="top" width="4%">

                               <input id="mgrp_-1" class="reset" type="checkbox" onclick="showMembers(-1, 0)" value="-1" name="member_group_id[]" style="position: absolute; z-index: -1; visibility: hidden;"/>

                               <span class="jquery-checkbox jquery-checkbox-checked" style="-moz-user-select: none;">


                              <span class="mark jquery-checkbox-hover">

                              <img width="24" height="24" src="/purebenefits/dev/images/empty.png"/>

                             </span>
                         </span>
                    </td>

                   <td valign="top" style="padding-left:0;">NO GROUP</td>

            </tr>

我正在处理一个测试用例,其中会出现多个复选框,单击每个复选框将调用函数 showMembers(checkbox value, 0)

在我的测试用例中,我首先计算了复选框的数量,然后使用循环我也可以单击每个复选框,但是在单击复选框时,它的 onclick 函数没有触发,这就是我无法继续的原因。我也使用了fireevent函数,但结果是一样的

我正在使用 selenium IDE,上面给出了该部分的 html 代码,下面给出了我为 selenium ide 编写的代码

<tr>
    <td>assertTextPresent</td>
    <td>New Quote</td>
    <td></td>
</tr>
<tr>
    <td>select</td>
    <td>name=insurance_type_id</td>
    <td>label=Group Life Assurance</td>
</tr>
<tr>
    <td>verifyTextPresent</td>
    <td>Policy Features </td>
    <td></td>
</tr>
<tr>
    <td>assertTextPresent</td>
    <td>Bronze</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>//div[@id='product_list_div']/table[@class='priceTable']/tbody/tr/th[4]/label/input[@id='prodid_6']</td>
    <td></td>
</tr>
<tr>
    <td>storeXpathCount</td>
    <td>//div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/input[@type='checkbox']/</td>
    <td>count</td>
</tr>
<tr>
    <td>echo</td>
    <td>${count}</td>
    <td></td>
</tr>
<tr>
    <td>getEval</td>
    <td>alert(&quot;Number of Group : ${count}&quot;)</td>
    <td></td>
</tr>
<tr>
    <td>store</td>
    <td>1</td>
    <td>j</td>
</tr>
<tr>
    <td>store</td>
    <td>1</td>
    <td>i</td>
</tr>
<tr>
    <td>store</td>
    <td>javascript{storedVars.count;}</td>
    <td></td>
</tr>
<tr>
    <td>while</td>
    <td>storedVars.i&lt;=${count}</td>
    <td></td>
</tr>
<tr>
    <td>echo</td>
    <td>${i}</td>
    <td></td>
</tr>
<tr>
    <td>echo</td>
    <td>${j}</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>${i}-${j}</td>
    <td>k</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>window.document.getElementsByName('member_group_id[]')[${k}].value</td>
    <td>abc</td>
</tr>
<tr>
    <td>echo</td>
    <td>${abc}</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>//div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/input[@value='${abc}']/</td>
    <td></td>
</tr>
<tr>
    <td>fireEvent</td>
    <td>//div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/input[@value='${abc}']</td>
    <td>&quot;click&quot;</td>
</tr>
<tr>
    <td>store</td>
    <td>javascript{storedVars.i++;}</td>
    <td></td>
</tr>
<tr>
    <td>endWhile</td>
    <td></td>
    <td></td>
</tr>

【问题讨论】:

  • 尝试clickAt,而不是clickfireEvent
  • @Aleh Douhi 根据您的建议,如果 click 和 fireEvent ,我尝试了 clickAt ,但 onclick 事件没有触发。
  • 该页面中有单选按钮,其中 onclick 事件正确触发,但当涉及复选框时,onclick 事件未触发
  • 顺便说一句,这是fireEvent 的正确语法吗?首先,删除click附近的引号。然后,我不确定clickfireEvent 命令支持的事件。试试fireEvent | locator | focus 然后click | locator
  • @Aleh Douhi 在站点复选框中将动态生成,因此当我将 clink 事件与定位器 [//div[@id='member_sel_div']/table[@ class='dataTable']/tbody/tr[@class='odd']/td/span/span/img ] 复选框被单击并且相应的面板正在打开但是当我使用 click 时,fireevent 和焦点与定位器[ //div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/input[@value=${abc}]/ ] 复选框正在被点击,但相应的面板没有打开。

标签: selenium selenium-ide


【解决方案1】:

您是否尝试过在应用 fireEvent 之前关注该元素?可能是这样。

【讨论】:

  • 我使用了聚焦事件,但结果是一样的。 焦点 //div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/输入[@value='${abc}']/ 点击 //div[@id=' member_sel_div']/table[@class='dataTable']/tbody/tr[@class='odd']/td/input[@value='${abc}']/ td> fireEvent //div[@id='member_sel_div']/table[@class='dataTable']/tbody/tr[@class='奇怪的']/td/input[@value='${abc}'] “点击” 如果有任何错误,你能建议吗
  • 只看html很难调试。我建议你继续使用selenium RC或webdriver。在那里你可以获得更多的编程和调试测试用例的能力。还有一些方法可以让您编写自己的 java 脚本来执行。
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多