Как загрузить веб-страницу несколько раз, используя grease-monkey и проверить наличие элемента? - PullRequest
1 голос
/ 24 января 2011

Как правило, я хочу многократно загрузить URL-адрес, скажем http://xyz.co.in, а затем проверить значение определенного элемента, как в процессе тестирования, и отслеживать журналы сервера для этого потока.

Я пытаюсь имитировать часть рабочего трафика, неоднократно обращаясь к одному и тому же хосту, чтобы выполнить дальнейшую обработку. Как лучше я могу пойти по этому поводу?

Flow

Загрузка веб-страницы -> Отслеживание журналов сервера -> Отслеживание определенных значений элементов в веб-интерфейсе -> Повторение.

Ответы [ 2 ]

1 голос
/ 24 января 2011

Я понял, что Selenium - лучший инструмент тестирования для таких сценариев.

Установите Selenium IDE в качестве дополнения FF и попробуйте следующие команды последовательно: -

Command   | Target | Value
1) open | _url_ | _blank_ |
2) waitForElementPresent | css=_selector_ or xpath=_selector_ |  _time in ms_ |
3) verifyElementPresent | css=_selector_ or xpath=_selector_ | _blank_ |

Вы можете пропустить шаг 2, если проверяемый элемент доступен при загрузке страницы, чем при отложенном вызове AJAX.

Если какой-либо из вышеперечисленных шагов завершился неудачей, то это будет неудача, иначе успех. Вы можете запланировать это для запуска 'n' количество раз.

1 голос
/ 24 января 2011

Greasemonkey - не лучший инструмент для нагрузочного тестирования веб-страниц / серверов / приложений.

Но вот скрипт, который многократно загружает страницу и проверяет наличие элемента:

// ==UserScript==
// @include         http://xyz.co.in/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==

$(document).ready (Greasemonkey_main);

function Greasemonkey_main ()
{
    do
    {
        var TargetNode  = $("#TargetNode"); //-- Look for node with id, "TargetNode".

        if (TargetNode  &&  TargetNode.length)
        {
            //--- Maybe also check contents:
            if (/Node contents to search for/i.test (TargetNode.text () ) )
            {
                alert ("We found what we're looking for");
                break;
            }
        }

        //--- Failsafe check on number of reloads
        var NumReloads  = parseInt (document.location.search.replace (/.*num_gm_reloads=(\d+).*/, "$1") )
        if (NumReloads > 2)
        {
            alert ("After 2 reloads, we still didn't find what we were looking for.");
            break;
        }

        //--- We neither found the stop code nor exhausted our retries, so reload the page.
        if (NumReloads)
            NumReloads++;
        else
            NumReloads  = 1;

        var TargetURL   = window.location.href;
        //--- Strip old URL param, if any.  Note that it will always be at the end.
        TargetURL       = TargetURL.replace ( /(.*?)(?:\?|&)?num_gm_reloads=\d+(.*)/, "$1$2" );
        var ParamSep    = /\?/.test (TargetURL) ? "&" : "?";

        TargetURL       = TargetURL + ParamSep + 'num_gm_reloads=' + NumReloads;

        window.location.href    = TargetURL;    //-- Reload the page.

    } while (0)
}
...