如何使用油脂猴重复加载网页并检查元素?

时间:2011-01-24 04:14:53

标签: html ajax testing greasemonkey

基本上,我想重复加载一个URL http://xyz.co.in,然后检查特定元素的值,就像测试过程和监视该流的服务器日志一样。

我试图通过反复点击同一主机进行进一步处理来模仿生产流量的一部分。我怎么能最好地解决这个问题呢?

流量

加载网页 - >监控服务器日志 - >监控前端的某些元素值 - >再说一遍。

2 个答案:

答案 0 :(得分:1)

Greasemonkey不是load testing网页/服务器/应用的最佳工具。

但这是一个重复加载页面并检查元素的脚本:

// ==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)
}

答案 1 :(得分:1)

我发现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_ |

如果要验证的元素在页面加载时比在延迟的AJAX调用上可用,则可以跳过步骤2.

如果上述任何步骤失败,那么其他失败也是成功的。您可以安排此次运行'n'次。