Selenium与BrowserMob.com

时间:2010-07-30 15:08:38

标签: selenium selenium-ide automated-tests

我正在与Selenium合作,以便在Web服务器上创建负载平衡测试。该网站有一个用户名/密码,为了使用这个,我有一个填充了用户名密码组合的csv文件。

问题是我在Javascript中使用随机函数从csv文件中选择一行并填充登录功能或注册详细信息。

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = csv.random();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

如果在计划的运行期间选择了两次相同的记录,这显然会导致注册时出现问题。显然,对于登录情况,如果在注册时未选择记录,然后在需要现有帐户的测试中选择该记录,则测试因不存在而失败。

我的问题是,是否有可能以某种方式让browserMob一次迭代一次记录?很显然,当browserMob开始进行负载测试时,它会逐渐增加,让我们说每次使用网站的10个用户都运行我假设的脚本?

我确实在C#中使用Selenium-RC和NUnit编写测试,并将csv文件读入List,然后遍历列表。显然,这会逐个运行每个用户,并且不会同时模拟站点上的多个用户。

对此有任何建议将不胜感激。

谢谢,

乔恩

2 个答案:

答案 0 :(得分:3)

要强制执行唯一参数化,您需要调用browserMob.getUserNum(),因为这将获取正在处理测试的节点的用户编号。你可以在help中看到这一点。我已经将代码更新为我认为它应该看起来的样子。应该意味着我没有测试过它:)

var csv = browserMob.getCSV("pickStickEmails.csv");
var row = browserMob.getUserNum();
var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

答案 1 :(得分:0)

我认为这可能是在负载测试期间为每个用户获取唯一记录的一种方法:

var csv = browserMob.getCSV("pickStickEmails.csv");

var rowNumbers = new Array();
for(i = 0; i <= csv.size(); i++)
{
  rowNumbers.push(i);
}

var uniqueRowNumber = rowNumbers[browserMob.getUserNum()];
var row = csv.get(uniqueRowNumber);

var Email = row.get("email");
var Password = row.get("password");

selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmail", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxEmailConfirm", Email);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPassword", Password);
selenium.type("ctl00_StandardMainBodyPlaceHolder_ctl00_TextBoxPasswordConfirm", Password);

它基本上创建了一个数字数组,用作csv文件的行号。然后它只使用CsvTable上的get()函数而不是随机使用从你的建议中选择的唯一编号。

感谢您的指导!