1

我正在使用 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 个用户同时使用该网站,每个用户都运行我假设的脚本?

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

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

谢谢,

乔恩

4

2 回答 2

3

要强制执行唯一参数化,您需要调用browserMob.getUserNum(),因为这将获取正在处理您的测试的那个节点的用户号。您可以在他们的帮助中看到这一点。我已将您的代码更新为我认为的外观。应该意味着我还没有测试过:)

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);
于 2010-08-02T07:23:10.657 回答
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() 函数,而不是随机使用从您的建议中选择的唯一编号。

谢谢指导!

于 2010-08-04T16:36:48.177 回答