Сохранение текста в скалярной форме внутри оператора If / Else - Robot Framework - PullRequest
1 голос
/ 04 августа 2020

Я хочу выполнить sh следующее в Robot Framework

Я хочу сохранить текст из элемента xpath://*[@id="plsAttachGrid_0_1"] в скалярном ${name3}, однако этот элемент не всегда доступен на веб-странице, поэтому мне нужно запустить оператор IF / ELSE, чтобы избежать ошибки, когда элемент недоступен.

Моя идея была следующей:

${countt2}=    Get Element Count    xpath://*[@id="plsAttachGrid_0_1"]
Run Keyword If    ${countt2}>0    
${name3}=    Get Text    xpath://*[@id="plsAttachGrid_0_1"]
ELSE    LOG    NO_FILE

Однако я узнали Невозможно сохранить в Скаляр внутри Run Keyword If, так как он ожидает Keyword.

Следовательно, как я могу выполнить sh это?

1 Ответ

2 голосов
/ 04 августа 2020

Ключевое слово внутри Run Keyword If может возвращать значение, которое распространяется вверх - например, может быть присвоено переменной, помещенной перед Run Keyword If; поэтому в вашем случае:

${name3}=    Run Keyword If    ${countt2}>0        Get Text    xpath://*[@id="plsAttachGrid_0_1"]

Итак, теперь ${name3} будет иметь возвращаемое значение Get Text, когда ${countt2}>0. Какая будет его ценность, если условие не будет выполнено? Это будет None (тип данных, а не строка), поскольку переменная теперь объявлена, но не определена явно.

В этом случае вы можете установить другое значение для обработки проще позже в коде:

${name3}=    Run Keyword If    ${countt2}>0        Get Text    xpath://*[@id="plsAttachGrid_0_1"]
                 ...           ELSE                Set Variable     not_set  # or ${0}, or any other value you need for ${countt2}<=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...