2010-08-06 17 views
0

Просто используя селен, чтобы заполнить некоторые формы для меня. Мне нужно, чтобы создать уникальное значение для моего поля имени пользователя. Как я могу это сделать?Selenium: получите уникальное значение?

У меня

Команда: Тип
Цель: id_of_my_field
Значение: имя пользователя + unique_value ???

ответ

5

Вы можете использовать JavaScript, чтобы сделать это:

Значение: JavaScript { 'имя пользователя' + Math.floor (Math.random() * 100000)}

Это добавит 6-значное случайное число для вашего имени пользователя.

См this SO question and answers для более подробной информации и другие способы сделать это ...

+0

Darn это.Я пытался «javascript:». Не знал о синтаксисе '{}'. Благодаря! – mpen

1

Мое решение, которое хорошо работает для меня:

Сохраните следующий текст в качестве .js файла и добавить в 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); 
} 

После этого, вы можете просто выбрать TypeRandomName команды в Selenium для каждого текстового поля, где требуется случайное «имя», чтобы быть сгенерированы.

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

+0

Это не сработает в сценариях, где числа генерируются обратным образом. Даже включая более подробную информацию (доли секунд), скорее всего, не удастся из-за отсутствия точности. –

1

шагов для глобально многоразового решения заключается в следующем

1) Скачать sideflow.js из Download here

2) Добавить следующие строки в него:

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 -> Параметры -> Параметры -> Расширения Selenium Core -> укажите ссылку на свой файл.

5) Теперь ваша функция randomname появится в auto-intellisense и будет как категория команд «typerandomname».

6) Пример использование может быть (если база URL является google.com)

<tr> 
    <td>open</td> 
    <td>/</td> 
    <td></td> 
</tr> 
<tr> 
    <td>typerandomname</td> 
    <td>css=input[class='gbqfif']</td> 
    <td></td> 
</tr> 

Надеется, что это помогает вам

Смежные вопросы