Можно ли изменить «Выбранный локатор» в объекте, сохраненном в хранилище объектов, чтобы я мог изменить его во время выполнения? - PullRequest
1 голос
/ 23 мая 2019

Я просто новичок в этом приложении, и мне трудно искать коды, так как я не знаю точных слов / терминов для поиска.

Поэтому я создал объект, имеющий только значениев «Выбранном локаторе»: enter image description here

Возможно ли добавить переменные в это поле?Я хотел бы применить переменные в этом разделе:

/tbody/tr[2]/td[2]/span

Я планирую рандомизировать оба из tr[2] и td[2].

Или другой вариант, если это возможно, перезаписатьвсе поле «Выбранный локатор»?

TIA!

Ответы [ 3 ]

0 голосов
/ 23 мая 2019

Создав параметризованный веб-объект .

  • , откройте объект из хранилища объектов
  • , выберите «Атрибуты» в качестве метода выбора
  • нажмите кнопку «Добавить» в свойствах объекта
  • установите Name на xpathToObject, Match condition на equals и Value на ..../tbody/${variableA}/${variableB}/span (Примечание: я не писалполный xpath, потому что он длинный, и я не могу скопировать и вставить со скриншота

Теперь вы можете вызывать этот объект со следующим синтаксисом

findTestObject('{your test object}', [('{property}') : '{value of property}'])

Или, в вашем случае:

findTestObject('span_Date Follow Up Day', [('variableA'):'tr[2]', ('variableB'):'td[2]'])

И вы можете изменить variableA или variableB по своему усмотрению и / или использовать параметры в любой части строки xpath.

0 голосов
/ 14 июня 2019

Надеюсь, что поможет следующее решение:

Во-первых, обновите ваш тестовый объект в хранилище объектов, как показано на рисунке enter image description here

В тестовом сценарии вашего тестового примера можнообрабатывать, как показано ниже:

KeywordLogger log = new KeywordLogger();

// Find test object
def toSpanDate = ObjectRepository.findTestObject("Object Repository/span_Date Follow Up Day");

// Get value of xpath property to replace row number and column number as expectation
def originalXpath = toSpanDate.findPropertyValue('xpath');

// Replace value
def newXpath = originalXpath.replace('pRowNumber', '2');
newXpath = newXpath.replace('pColumnNumber', '2');

// Update xpath property value of test object
toSpanDate = WebUI.modifyObjectProperty(toSpanDate, 'xpath', 'equals', newXpath, true);

// Get new value of xpath property to double check
def currentXpathOfSpan = toSpanDate.findPropertyValue('xpath');
log.logInfo('currentXpathOfSpan: ' + currentXpathOfSpan);

Выполненный результат: enter image description here

0 голосов
/ 23 мая 2019

Вот краткое руководство по использованию параметризованных тестовых объектов в Katalon Studio.

a)

Однако, если вы знаете, как писатьв режиме сценария вы можете создавать объекты непосредственно в сценарии:

TestObject followUpDay = new TestObject.addProperty("xpath", ConditionType.EQUALS, "/tbody/tr[2]/td[2]/span")

со следующими импортированными классами

import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObject as TestObject

b)

Теперь позвольте мне показать вам, как вы можете добавлять переменные к своим объектам, используя Groovy-строку.

Этот код эквивалентен приведенному выше коду:

String xpathToObject = "/tbody/tr[2]/td[2]/span"
TestObject followUpDay = new TestObject.addProperty("xpath", ConditionType.EQUALS, xpathToObject)

Но, если вы хотитечтобы добавить переменные (например, для выбора номера строки и столбца), вы можете использовать интерполяцию строк, чтобы изменить строку xpathToObject:

def rowNumber = 2
def colNumber = 2
String xpathToObject = "/tbody/tr[${rowNumber}]/td[${colNumber}]/span"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...