Проверка динамического текста в тестировании - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь подтвердить пин-код в моем приложении.Я использую Katalon, и мне не удалось найти ответ.

Пин-код, который мне нужно проверить, имеет одинаковую длину, но разную при каждом запуске теста, и на моей странице выглядит так: PIN-кодКод: 4938475948.

Как я могу учитывать изменение числа при каждом запуске теста?

Я пробовал следующие регулярные выражения:

assertEquals(
    "PIN Code: [^a-z ]*([.0-9])*\\d", 
    selenium.getText("//*[@id='RegItemContent0']/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div[1]/div[3]/ul/li[2]/span")
);

Примечание:Это было закодировано в Selenium и преобразовано в Katalon.

Ответы [ 3 ]

0 голосов
/ 21 октября 2018

Редактирование верхнего примера, но чтобы это работало

 TestObject object = new TestObject().addProperty('xpath', ConditionType.EQUALS, '//*[@id='RegItemContent0']/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div[1]/div[3]/ul/li[2]/span')
        def actualText = WebUI.getText(object) 
        def expectedText = '4938475948'
        WebUI.verifyMatch(actualText, expectedText, true)

Это можно сделать как переменную, но в вашем случае я рекомендую использовать некоторые java

import java.util.Random;

Random rand = new Random();

int  n = rand.nextInt(9000000000) + 1000000000;
// this will also cover the bad PIN (above limit)
0 голосов
/ 28 февраля 2019

Я бы немного подправил ваше регулярное выражение, так как ваш пин-код каждый раз имеет одинаковую длину: вы могли бы ограничить количество цифр, которые ищет регулярное выражение, и убедиться, что следующий символ - это пробел (т.е. не цифра,или другой случайный персонаж).Наконец, используйте флаг «true», чтобы WebUI.verifyMatch () знал, что ему следует ожидать регулярное выражение от второй строки (регулярное выражение должно быть вторым параметром).

def regexExpectedText = "PIN Code: ([0-9]){10}\\s"
TestObject pinCodeTO = new TestObject().addProperty('xpath', ConditionType.EQUALS, '//*[@id='RegItemContent0']/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div[1]/div[3]/ul/li[2]/span')
def actualText = WebUI.getText(pinCodeTO) 

WebUI.verifyMatch(actualText, expectedText, true)

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

0 голосов
/ 18 октября 2018

В Katalon используйте комбинацию WebUI.getText() и WebUI.verifyMatch(), чтобы сделать то же самое.

Например,

TestObject object = new TestObject().addProperty('xpath', ConditionType.EQUALS, '//*[@id='RegItemContent0']/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div[1]/div[3]/ul/li[2]/span')
def actualText = WebUI.getText(object) 
def expectedText = '4938475948'
WebUI.verifyMatch(actualText, expectedText, true)

Используйте также toInteger() или toString() Groovy методыдля преобразования типов, если это необходимо.

...