Подтвердить что ты не робот

Использование Selenium IDE со случайными значениями

Можно ли создавать тесты Selenium с помощью плагина Firefox, которые используют случайно генерируемые значения, чтобы помочь провести регрессионные тесты?

Полная история: Я хотел бы помочь моим клиентам провести приемочное тестирование, предоставив им набор тестов, которые используют некоторые умения для создания случайных (или, по крайней мере, псевдослучайных) значений для базы данных. Одной из проблем с моими испытаниями Selenium IDE на данный момент является то, что они имеют предопределенные значения, что делает некоторые типы тестирования проблематичными.

4b9b3361

Ответ 1

Во-первых, Selenium IDE довольно ограничен, вам следует рассмотреть возможность переключения на Selenium RC, который может управляться Java или Perl или Ruby или некоторыми другими языками.

Используя только Selenium IDE, вы можете встраивать выражения JavaScript для получения параметров команды. Вы должны иметь возможность ввести случайное число в текстовое поле, например:

type fieldName javascript{Math.floor(Math.random()*11)}

Обновление:. Вы можете определить вспомогательные функции в файле с именем "user-extensions.js". См. Ссылку Selenium Reference.

Ответ 2

(Основываясь на ответе Тило) Вы можете смешивать литералы и случайные числа следующим образом:

javascript{"joe+" + Math.floor(Math.random()*11111) + "@gmail.com";}

Gmail позволяет автоматически автоматически использовать все, что использует псевдонимы, например [email protected], на ваш адрес [email protected]

Умножение * 11111, чтобы дать вам более случайные значения, чем от 1 до 9 (в примере Тило)

Ответ 3

Вы можете добавить пользователя exentions.js для получения случайных значений.

Скопируйте приведенный ниже код и сохраните его как .js extension (randomgenerator.js) и добавьте его в расширения ядра Selenium (SeleniumIDE → Options --- > общая вкладка)

Selenium.prototype.doRandomString = function( options, varName ) {

    var length = 8;
    var type   = 'alphanumeric';
    var o = options.split( '|' );
    for ( var i = 0 ; i < 2 ; i ++ ) {
        if ( o[i] && o[i].match( /^\d+$/ ) )
            length = o[i];

        if ( o[i] && o[i].match( /^(?:alpha)?(?:numeric)?$/ ) )
            type = o[i];
    }

    switch( type ) {
        case 'alpha'        : storedVars[ varName ] = randomAlpha( length ); break;
        case 'numeric'      : storedVars[ varName ] = randomNumeric( length ); break;
        case 'alphanumeric' : storedVars[ varName ] = randomAlphaNumeric( length ); break;
        default             : storedVars[ varName ] = randomAlphaNumeric( length );
    };
};

function randomNumeric ( length ) {
    return generateRandomString( length, '0123456789'.split( '' ) );
}

function randomAlpha ( length ) {
    var alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alpha );
}

function randomAlphaNumeric ( length ) {
    var alphanumeric = '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split( '' );
    return generateRandomString( length, alphanumeric );
}

function generateRandomString( length, chars ) {
    var string = '';
    for ( var i = 0 ; i < length ; i++ )
        string += chars[ Math.floor( Math.random() * chars.length ) ];
    return string;
}

Способ использования

Command                Target     Value
-----------           ---------   ----------
randomString           6           x
type                username       ${x}

Над кодом генерируется 6 строк символов и присваивается переменной x

Код в формате HTML выглядит следующим образом:

<tr>
    <td>randomString</td>
    <td>6</td>
    <td>x</td>
</tr>
<tr>
    <td>type</td>
    <td>username</td>
    <td>${x}</td>
</tr>

Ответ 4

Здесь однострочное решение для создания случайной строки букв в JS:

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").filter(function(e, i, a) { return Math.random() > 0.8 }).join("")

Полезно для вставки в Selenium IDE.

Ответ 5

Однострочный для случайного выбора из небольшого набора альтернатив:

javascript{['brie','cheddar','swiss'][Math.floor(Math.random()*3)]}

Ответ 6

<tr>
<td>store</td>
 <td>javascript{Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 8)}</td>
<td>myRandomString</td>
</tr>

Ответ 7

Я немного улучшил функцию generateRandomString. Когда FF выйдет из строя, полезно снова использовать одно и то же случайное число.

В принципе, он попросит вас ввести строку самостоятельно. Если вы ничего не введете, это сгенерирует его.

function generateRandomString( length, chars ) { var string=prompt("Please today random string",''); if (string == '') {for ( var i = 0 ; i < length ; i++ ) string += chars[ Math.floor( Math.random() * chars.length ) ]; return string;} else { return string;} }

Ответ 8

Сознавая сообщение RajendraChary выше, я потратил некоторое время на создание нового расширения Selenium IDE.

Мое расширение позволит пользователю заполнить переменную с помощью lorem ipsum text. Есть несколько настраиваемых параметров, и он превратился в небольшую небольшую команду. Вы можете делать что-то вроде "5 слов | wordcaps | nomarks" для генерации 5 слов lorem ipsum, все заглавные буквы, без пунктуации.

Я подробно объяснил установку и использование, а также предоставил полную кодовую базу здесь

Если вы заглянете в код, вы получите представление о том, как создать аналогичную функциональность.

Ответ 9

Вот еще один вариант примера gmail:

<tr>
  <td>runScript</td>
  <td>emailRandom=document.getElementById('email');console.log(emailRandom.value);emailRandom.value=&quot;myEmail+&quot; + Math.floor(Math.random()*11111)+ &quot;@gmail.com&quot;;</td>
 <td></td>
</tr>

Ответ 10

Selenium RC дает вам гораздо больше свободы, чем Selenium IDE, в котором вы можете:

  • (1) Введите любое значение в определенное поле
  • (2) Выберите любое поле для проверки в определенной HTML-форме
  • (3) Выберите любой порядок выполнения/шаг для проверки определенного набора полей.

Вы спросили, как ввести какое-либо случайное значение в поле, используя Selenium IDE, другие люди ответили вам, как создавать и вводить случайные значения в поле, используя Selenium RC. Это входит в стадию тестирования (1): "Введите любое значение в определенное поле".

Используя Selenium RC, вы можете легко выполнить фазу (2) и (3): проверить любое поле на любом этапе выполнения, выполнив некоторое программирование на поддерживаемом языке, таком как Java, PHP, CSharp, Ruby, Perl, Python.

Ниже приведены шаги для выполнения фазы (2) и (3):

  • Создайте список ваших полей HTML, чтобы вы могли легко прокручивать их.
  • Создайте случайную переменную для управления шагом, скажем, RAND_STEP
  • Создайте случайную переменную для управления полем, скажем RAND_FIELD
  • [В конце концов, создайте случайную переменную для управления значением, введенным в определенное поле, например RAND_VALUE, если вы хотите сделать фазу (1)]
  • Теперь, внутри вашего алгоритма fuzzing, сначала итерации через значения RAND_STEP, затем с каждой такой итерацией, итерации через RAND_FIELD, а затем, наконец, итерации через RAND_VALUE.

См. мой другой ответ о тестировании на пушистое тестирование, тестирование селена и белого/черного ящика

Ответ 11

Math.random может быть "достаточно хорошим", но на практике Случайный класс часто предпочтительнее Math.random(). Используя Math.random, цифры, которые вы получаете, на самом деле не могут быть полностью случайными. Книга "Эффективное второе издание Java" охватывает это в пункте № 47.

Ответ 12

Еще одно решение, которое я скопировал и вложил в сотни тестов:

<tr>
    <td>store</td>
    <td>javascript{var myDate = new Date(); myDate.getFullYear()+&quot;-&quot;+(myDate.getMonth()+1)+&quot;-&quot;+myDate.getDate()+&quot;-&quot;+myDate.getHours()+myDate.getMinutes()+myDate.getSeconds()+myDate.getMilliseconds();}</td>
    <td>S_Unique</td>
</tr>
<tr>
    <td>store</td>
    <td>Selenium Test InternalRefID-${S_Unique}</td>
    <td>UniqueInternalRefID</td>
</tr>
<tr>
    <td>store</td>
    <td>Selenium Test Title-${S_Unique}</td>
    <td>UniqueTitle</td>
</tr>
<tr>
    <td>store</td>
    <td>SeleniumEmail-${G_Unique}@myURL.com</td>
    <td>UniqueEmailAddress</td>
</tr>

Каждый набор тестов начинается с установки ряда переменных (если это большой набор, используйте отдельный файл, например Set_Variables.html). Эти переменные затем могут использоваться во всем вашем пакете для установки, тестирования и удаления тестовых данных. И поскольку переменные используют дату, а не случайное число, вы можете отлаживать свой тестовый пакет, ища объекты, которые имеют дату.