Selenium IDE在弹出窗口中卡在clickAndWait命令上

时间:2011-07-14 21:58:35

标签: command postback anchor selenium-ide

如何使用Selenium IDE自动点击此锚标记(当然是在Mozilla Firefox中)?我尝试了两种不同的方法,但都没有。这是在弹出窗口中是否重要?我可以让其他控件工作。

HTML:

&lt; a href =“javascript:__ doPostBack('EditTestResult $ EditOverallTestResults $ BucketMove $ LBuSelect','')”class =“standard-text”id =“EditTestResult_EditOverallTestResults_BucketMove_LBuSelect”&gt; - &gt;&lt; / a&gt; < / p>

无效的Selenium代码:

命令:clickAndWait
目标:id = EditTestResult_EditOverallTestResults_BucketMove_LBuSelect
价值:

无效的Selenium代码:

命令:clickAndWait
目标:link = - &gt;
价值:

==========================

8/7/2011更新

所以我得到了关于这个的更多信息。此命令之前的命令如下:

命令:addSelection
目标:id = idofmultiselect
值:option1

当我在上面的“clickAndWait”命令中启动脚本(按下“s”键)时,它可以正常工作(对于这两个版本)。 当IDE在clickAndWait命令上获得STUCK时,我就有了这个多选项。我尝试过使用“addSelectionAndWait”并且没有修复它。

==========================

8/8/2011更新

我不能把实际的动态代码放进去,所以这就足够了。

<html>

<body>

<form>

<table cellpadding="0" cellspacing="0" border="0">
    <tr>
        <td><span id="EditTestResult_EditOverallTestResults_BucketMove_LblUnselectedBox">Does Not Have Results...</span><br>
            <select size="4" name="EditTestResult$EditOverallTestResults$BucketMove$LBoUnselected" multiple="multiple" id="EditTestResult_EditOverallTestResults_BucketMove_LBoUnselected" style="height:100px;width:220px;">
        <option value="214">Cocaine/Metabolite - Positive</option>

        <option value="213">Opiate - Positive</option>
        <option value="37">Phencyclidine - Positive</option>
        <option value="58">THC Metabolite - Positive</option>

    </select></td>
        <td vAlign="middle">
            <table>
                <tr>

                    <td><a id="EditTestResult_EditOverallTestResults_BucketMove_LBuSelect" class="standard-text" href="javascript:__doPostBack('EditTestResult$EditOverallTestResults$BucketMove$LBuSelect','')">-&gt;</a></td>
                </tr>
                <tr>
                    <td><a id="EditTestResult_EditOverallTestResults_BucketMove_LBuUnselect" class="standard-text" href="javascript:__doPostBack('EditTestResult$EditOverallTestResults$BucketMove$LBuUnselect','')">&lt;-</a></td>
                </tr>
            </table>
        </td>
        <td><span id="EditTestResult_EditOverallTestResults_BucketMove_LblSelectedBox">Has Results...</span><br>

            <select size="4" name="EditTestResult$EditOverallTestResults$BucketMove$LBoSelected" multiple="multiple" id="EditTestResult_EditOverallTestResults_BucketMove_LBoSelected" style="height:100px;width:220px;">
        <option value="206">Amphetamine - Positive</option>

    </select></td>
    </tr>
</table>


<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    alert("doing postback");
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

</form>

</body>
</html>

====================

8/22/2011更新:

发现ASP.NET验证可能导致clickAndWait命令隐式失败。在Selenium中运行脚本时,Selenium IDE中的验证消息与手动使用Web浏览器时的验证消息不同。因此看起来命令可能会失败,但实际上,表单无法提交,并且您无法在手动单击鼠标按钮时看到浏览器中的红色验证消息(而不是clickAndWait命令执行此操作)。这解决了我的一大堆问题,但不是这个问题。我还在寻找答案。

1 个答案:

答案 0 :(得分:5)

这里的问题可能是同步问题。如果这是一个AJAX,它似乎是,那么所有的AndWait方法对你都没用。

尝试使用Click后跟WaitForElementPresent或类似的东西。

AndWait仅在浏览器中存在完整的物理页面加载时才会起作用。这看起来像是一个更大的形式的一部分,如果根据您提供的代码发生这种情况,我会感到惊讶。

另见http://saucelabs.com/blog/index.php/2011/02/advanced-selenium-synchronization-with-latches/