Автоматический Escape-символ во время выполнения создает проблему в рамках робота

#python-3.x #python-2.7 #robotframework #pywinauto

Вопрос:

У меня есть ключевое слово, как показано ниже, которое будет выполняться для каждого ключевого слова.

Ниже приведен код

 *** Settings ***
Documentation    Suite description
Test Template       Templete key
Test Teardown       Teardown key

*** Test Cases ***
Test case1 
    click element    auto_id=1031      control_type=Button

*** Keywords ***
Templete key
    [Arguments]     @{args}
    log     ${Healing_Result}
    run keyword if          '${HR}'=='Error' or '${HR}'=='FAIL'  fail
    ${status}     ${ErrorMessage}       run keyword if  '${HR}'=='PASS'  or '${status}'=='PASS'     Run keyword and ignore error    @{args}
                                        ...     ELSE            FAIL
    run keyword if          '${HR}'=='Error'   fail
 

В log.html

 Templete key right_click_element, title=${printer_Name}, control_type=ListItem
click element auto_id=1031, control_type=Button
 

Я не понимаю, почему мы видим после auto_id и control_type

Когда мы запускаем приведенный ниже код отдельно,он работает без проблем . Но когда мы работаем с шаблоном , я сталкиваюсь с этой проблемой .

  click element    auto_id=1031      control_type=Button
 

Ответ №1:

Это связано с тем , что вы определили ключевое слово с переменными аргументами @{args} , хотя, вероятно, думаете об именованных аргументах («аргументы ключевых слов» в python).

Таким образом, когда вы передаете ему «auto_id=1031», это просто строка, в которой случайно присутствует знак равенства, а не «параметр auto_id должен иметь значение 1031»; и также из-за этого он ускользает от символа=.

Чтобы исправить это, просто используйте именованные аргументы:

 Templete key
    [Arguments]     ${kw}    amp;{args}
 

, и внутри него:

 Run keyword and ignore error    ${kw}   amp;{args}