Селен: получить уникальную ценность? - PullRequest
0 голосов
/ 06 августа 2010

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

У меня есть

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

Ответы [ 4 ]

5 голосов
/ 06 августа 2010

Вы можете использовать JavaScript для этого:

Значение : javascript {'username' + Math.floor (Math.random () * 100000)}

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

См. этот вопрос и ответы для получения более подробной информации и других способов сделать это ...

1 голос
/ 08 сентября 2014

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

1) Загрузите файл sideflow.js из Загрузите здесь

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 -> options -> options -> Selenium Core extensions -> укажите ссылку на ваш файл.

5) Теперь ваша функция произвольного имени появится в 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>

Надеюсь, это поможет вам

1 голос
/ 13 марта 2012

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

Сохраните следующий текст в виде файла .js и добавьте в список «Параметры-> Параметры» 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 голосов
/ 20 февраля 2013

Вот способ генерирования уникальных чисел без использования 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

...