Если это то, что часто повторяется, и вы хотите централизовать логику и вообще не иметь дело с переменными, тогда Стратегия пользовательского локатора ,
Пример, вдохновленный вашим вопросом:
*** Test Cases ***
Test Case
Add Location Strategy table Custom Locator Strategy
Page Should Contain Element table=3
*** Keywords ***
Custom Locator Strategy
[Arguments] ${browser} ${criteria} ${tag} ${constraints}
${element}= Get Webelement css=.tr > td:nth-child(${criteria})
[Return] ${element}
Это будет работать для всех ключевых слов, которые принимают локатор в качестве входного аргумента. Стратегия пользовательского локатора должна возвращать только веб-элемент.
Альтернатива, которая, на мой взгляд, удовлетворяет встроенным критериям, но, на мой взгляд, не более читабельна (оставьте это читателю), заключается в использовании строковых функций объекта. Они описаны в разделе Advanced Variable Syntax Руководства по структуре роботов и вокруг него:
*** Variables ***
${locator_template} css=.tr > td:nth-child(%)
*** Test Cases ***
TC
Log Locator Template: "${locator_template}"
${locator} Set Variable ${locator_template.replace("%", "9")}
Log Locator Variable: "${locator}"
Log Inline Variable: "${locator_template.replace("%", "9")}"
Log Locator Template: "${locator_template}"
В этом примере показано, как использовать встроенные функции объекта. Поскольку у объекта Python String есть метод replace, он обеспечит стабильный способ замены той же переменной и использования выходных данных replace для дальнейшего назначения в ключевых словах.
Это даст следующий результат:
Starting test: Robot.String Replace.TC
20180513 12:25:21.057 : INFO : Locator Template: "css=.tr > td:nth-child(%)
20180513 12:25:21.058 : INFO : ${locator} = css=.tr > td:nth-child(9)
20180513 12:25:21.059 : INFO : Locator Variable: "css=.tr > td:nth-child(9)"
20180513 12:25:21.060 : INFO : Inline Variable: "css=.tr > td:nth-child(9)"
20180513 12:25:21.061 : INFO : Locator Template: "css=.tr > td:nth-child(%)"
Ending test: Robot.String Replace.TC
Как вы можете сказать, функция замены возвращает результат, а не обновляет исходную строку. Это делает его полезным для использования в качестве шаблона для повторного использования.