Используйте «выполнить ключевое слово if» для вызова функции со строковым аргументом, но без изменения строки - PullRequest
0 голосов
/ 01 ноября 2018

Я столкнулся со странной проблемой, поэтому я написал этот пример, где я дважды вызываю «print $ {dir}»:

*** Variables ***
${dir} =  "c:\\temp"

*** Test Cases ***   
Test
    print ${dir}
    run keyword if    1 == 1    print ${dir}

*** Keywords ***  
print ${input1}
    log to console    \r${input1}

Выход:

"c:\temp"
"c:     emp"

Что мне нужно сделать, чтобы «print $ {dir}» печатал одно и то же каждый раз?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Проблема связана с тем, что вы используете синтаксис встроенного аргумента. Чтобы робот знал, какое ключевое слово вызывать, он должен сначала развернуть переменную перед тем, как вызовет ключевое слово. Это удаляет один слой обратной косой черты. Затем, когда ваше ключевое слово передает то, что осталось ключевому слову log to console, оно видит \t как символ табуляции, поэтому вы видите символ табуляции, а не обратную косую черту и букву "t".

Одним из решений является использование традиционных аргументов, а не встроенных аргументов. В следующем примере выводятся одинаковые значения для обоих раз, когда ключевое слово называется:

*** Variables ***
${dir} =  "c:\\temp"

*** Test Cases ***   
Test
    print  ${dir}
    run keyword if    1 == 1    print  ${dir}

*** Keywords ***  
print
    [Arguments]  ${input1}
    log to console    \r${input1}
0 голосов
/ 01 ноября 2018

Мне кажется, что ключевое слово Run Keyword If делает дополнительное экранирование от обратной косой черты. Добавив еще 1 обратную косую черту, вы увидите, что это произойдет и в первом примере.

Чтобы преодолеть эту проблему, нужно переключиться с обратной косой черты () на прямую косую черту (/). Это работает на системах * nix и Windows.

 *** Variables ***
 ${dir} =  "c:\\temp"

до

 *** Variables ***
 ${dir} =  "c:/temp"

Это по-прежнему допустимый путь в Windows. Так что функционально ссылка на путь также будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...