Создание случайной строки в Cypress и передача ее команде cy - PullRequest
0 голосов
/ 09 января 2019

Я новичок в Cypress и у меня небольшая проблема, по которой мне нужна помощь.

В моем приложении есть поле ввода, которое позволяет мне вводить имя. Это имя должно быть уникальным и не должно совпадать с уже существующим именем в системе.

Я сейчас щёлкаю по этому полю ввода:
cy.get('input[type="text"].form-control')

Если я использую команду cy.type(), при этом всегда будет вводиться одно и то же значение, но при каждом запуске теста я хочу присвоить другое значение.

// Fill in some details of a new class to proceed with creation  
cy.get('.pull-left > h4').contains('Add a new class')  
cy.get('input[type="text"].form-control') // Clicks on the field

// Some code to go here to create a random string and use what was created and 
type this into the field above

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

Ответы [ 4 ]

0 голосов
/ 09 июля 2019
example.spec.js

it('timestamp', function() {
cy.task('datenow').then((random) => { cy.log('test' + random)})
}) 

plugins/index.js

on('task', {
datenow () {
return Date.now()
}
}) 

Приведенный выше код будет генерировать случайные строки

0 голосов
/ 09 января 2019

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

    function generate_random_string(string_length) {
        let random_string = '';
        let random_ascii;
        for(let i = 0; i < string_length; i++) {
            random_ascii = Math.floor((Math.random() * 25) + 97);
            random_string += String.fromCharCode(random_ascii)
        }
        return random_string
    }

Затем я назначаю это переменной ниже:

var random_string = generate_random_string(8)

Затем извлекается из него и выводится в поле с помощью простых команд get и type в Cypress:

cy.get('input[type="text"].form-control').type(random_string)

Это получает значение и вводит его в поле, которое я хотел. Я также могу снова «random_string» в любом тесте, скажем, например, если я хочу сделать некоторые утверждения позже в тесте.

0 голосов
/ 10 января 2019

Попробуйте этот код. Надеюсь, что это сработает.

cy.get(':nth-child(2) > :nth-child(2) > input').type(userID_Alpha())
function userID_Alpha() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    for (var i = 0; i < 10; i++)
      text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
  }

ИЛИ Используйте следующий код

cy.get(':nth-child(2) > :nth-child(2) > input').type(userID_Alpha_Numeric())      

function userID_Alpha_Numeric() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for (var i = 0; i < 10; i++)
      text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
  }
0 голосов
/ 09 января 2019

Я делаю некоторые предположения здесь. Я предполагаю, что есть какой-то API, который вы вызываете, чтобы проверить, есть ли дублирующееся имя. Я бы заглушки / издеваться, чтобы обойти это. Я полагаю, что здесь у вас есть предположение, но вы передаете имя, и вы получаете что-то, что говорит «истина» или «ложь», вы заглушки, что всегда возвращает «ложь», так что вы можете сделать свой дубликат.

...