Selenium IDE застревает по команде clickAndWait во всплывающем окне - PullRequest
2 голосов
/ 15 июля 2011

Как я могу автоматизировать щелчок по этому тегу привязки с помощью Selenium IDE (конечно, в Mozilla Firefox)? Я пробовал два разных подхода, и ни один из них не работал. Будет ли иметь значение, что это во всплывающем окне? Я могу заставить работать другие элементы управления.

HTML:

->

Код Селена, который не работал:

Команда: clickAndWait
Цель: id = EditTestResult_EditOveragesTestResults_BucketMove_LBuSelect
Значение:

Код Селена, который не работал:

Команда: clickAndWait
Цель: ссылка = ->
Значение:

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

8/7/2011 обновление

Итак, я получил больше информации об этом. Команда перед этой командой следующая:

Команда: addSelection
Цель: id = idofmultiselect
Значение: option1

Когда я запускаю скрипт (нажатие клавиши «s») по моей команде «clickAndWait» выше, он отлично работает (для обеих версий). Это когда у меня есть этот выбор нескольких элементов, когда IDE получает STUCK по команде clickAndWait. Я пытался использовать 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 сообщения проверки в IDE Selenium не отображаются так, как при использовании веб-браузера вручную. Таким образом, может показаться, что команда не выполнена, но в действительности форма не может быть отправлена, и вы не можете видеть красные сообщения проверки в браузере, как обычно, когда вы вручную нажимаете кнопку мышью (вместо того, чтобы иметь нажмите команду AndWait, делающую это). Это исправило кучу моих проблем, но не эту. Я все еще ищу ответ.

1 Ответ

5 голосов
/ 10 августа 2011

Проблема здесь, скорее всего, в синхронизации.Если это AJAX, каким он выглядит, то все методы AndWait для вас бесполезны.

Попробуйте просто использовать Click, затем WaitForElementPresent или что-то подобное.

AndWait будет работать только тогда, когдав браузере полностью загружена физическая страница.Похоже, что это часть гораздо большей формы, и я был бы удивлен, если бы это произошло, учитывая предоставленный вами код.

См. Также http://saucelabs.com/blog/index.php/2011/02/advanced-selenium-synchronization-with-latches/

...