只需使用selenium为我填写一些表格。我需要它为我的用户名字段生成一个唯一值。我怎么能这样做?
我有
命令:类型
目标: id_of_my_field
值:用户名+ unique_value ???
答案 0 :(得分:5)
您可以使用javascript来执行此操作:
值:javascript {'username'+ Math.floor(Math.random()* 100000)}
这会在您的用户名后附加一个6位数的随机数。
有关详细信息和其他方法,请参阅this SO question and answers ...
答案 1 :(得分:1)
我的解决方案对我有用:
将以下TEXT保存为.js文件并添加到Options-> Options“Selenium Core Extensions”列表...
Selenium.prototype.doTypeRandomName = function(locator)
{
/**
* Sets the value of an input field to a random "name"
* as though you typed it in.
*/
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);
/* The following block generates a random name 8 characters in length */
var allowedChars = "abcdefghiklmnopqrstuvwxyz";
var stringLength = 8;
var randomstring = '';
for (var i=0; i<stringLength; i++) {
var rnum = Math.floor(Math.random() * allowedChars.length);
randomstring += allowedChars.substring(rnum,rnum+1);
}
// Replace the element text with the new text
this.browserbot.replaceText(element, randomstring);
}
完成后,您只需在Selenium中为每个要生成随机“名称”的文本框选择TypeRandomName
命令。
答案 2 :(得分:1)
全球可重用解决方案的步骤如下
下载sideflow.js2)在其中添加以下行:
Selenium.prototype.doTypeRandomName = function(locator) {
/**
* Sets the value of an input field to a random email id,
* as though you typed it in.
*
* @param locator an <a href="#locators">element locator</a>
*/
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);
/* The following block generates a random email string */
var allowedChars = "abcdefghiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
var stringLength = 8;
var randomstring = '';
for (var i=0; i<stringLength; i++) {
var rnum = Math.floor(Math.random() * allowedChars.length);
randomstring += allowedChars.substring(rnum,rnum+1);
}
// Replace the element text with the new text
this.browserbot.replaceText(element, randomstring);
};
3)保存文件
4)转到Selenium ide - &gt;选项 - &gt;选项 - &gt; Selenium Core扩展 - &gt;在那里提供你的文件的参考。
5)现在你的randomname函数将出现在auto-intellisense中,并将作为“typerandomname”命令类别。
6)样本使用可能是(如果基本网址是google.com)
<tr>
<td>open</td>
<td>/</td>
<td></td>
</tr>
<tr>
<td>typerandomname</td>
<td>css=input[class='gbqfif']</td>
<td></td>
</tr>
希望这有助于你
答案 3 :(得分:0)
这是一种在代码中不使用JavaScript生成唯一数字的方法:(我使用Java)
DateFormat dateFormat = new SimpleDateFormat("ddHHmmss"); /* Here you create object of the class DateFormat, and SPECIFY THE FORMAT (ddHHmmss). (Don`enter code here`t forget to import class Date(ctrl+shift+o if you are using Eclipse)) */
Date date = new Date(); /* Here you create object of the class Date. (Dont forget to import class Date. (Dont forget to import class Date(ctrl+shift+o if you are using Eclipse)) */
String random_number = dateFormat.format(date); /* Assign your current Date(something like 19184123) (ddHHmmSS) to a local variable(it require a String) */
yourWebDriver().findElemnt(By.cssSelector("input#someId")).sendKeys("test"+random_number+"@tester.com"); /* send keys to your input injecting random number */
这种方法会给出真正独特的数字,永远不会重复,因为它会使用你当前的时间......
如果将日期秒包含在DateFormat
中,您可以添加更多随机性