Слишком много аргументов для ожидания условия в Robot Framework? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть следующая строка в Robot Framework

Wait for condition  'Get element attribute  id:something  attribute=something_else'  ==  'abc'

Я думаю, это довольно очевидно: я хочу подождать, пока Get element attribute вернет abc.

Однако этовозвращает сообщение об ошибке

Wait for condition expected 1 to 3 arguments, got 5.

На абстрактном уровне это сообщение об ошибке довольно ясно, но я не понимаю, как оно применяется здесь.Пять аргументов, на которые он ссылается, являются аргументами не Wait for condition, а Get element attribute.. Я хочу отправить два аргумента Wait for condition, которые должны быть равны, возвращаемое значение из Get element attribute и строку abc.

Как мне написать это?

Ответы [ 2 ]

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

В другом ответе было справедливо указано, что ключевое слово Wait For Condition предназначено только для запуска кода js в браузере.Вот как сделать то, что вы хотите, с помощью встроенного ключевого слова Wait Until Keyword Succeeds и SeleniumLibrary Element Attribute Value Should Be:

Wait Until Keyword Succeeds    retry=1 minute    retry_interval=5 seconds    Element Attribute Value Should Be    id:something  attribute=something_else    expected=abc

Element Attribute Value Should Be является новым в библиотеке Seleniumv3.2, если у вас еще нет этой версии, вот пример реализации:

Attribute Value Should Be
    [Documentation]    Fails if the element's attribute is not the expected one
    [Arguments]    ${locator}    ${attribute}    ${expected}

    ${value}=    Get Element Attribute    ${locator}    ${attribute}
    Run Keyword If    """${value}""" != """${expected}"""
    ...     Fail    The attribute's value is different from the expected: ${value} != ${expected}
0 голосов
/ 29 ноября 2018

Это не так, как wait for condition работает.Вы не можете дать ему ключевое слово.Вы должны дать ему выражение javascript.

Из документации:

Условие может быть произвольным выражением JavaScript, но оно должно возвращать значение для оценки.См. Выполнение JavaScript для получения информации о доступе к контенту на страницах.

...