RobotFrameWork: как проверить динамический элемент в верхней строке блока компонента - PullRequest
0 голосов
/ 11 февраля 2019

Итак, есть веб-сайт: https://www.investing.com/equities/pre-market

И на сайте есть блок с идентификатором: named_block

В этом блоке есть строки ...

как можноЯ проверяю, что в столбце 'Chg.%' Элемент имеет знак + перед значением / цифрами.

Я выяснил, что это 2-й TR и затем 6-й класс ....

так как мне это сделать?

Я попробовал это:

Should Match Regexp  bold pidExt-23176-pcp greenFont  ^[+]

(однако мне не нравится это решение, потому что имя класса может измениться)

Кстати, результат теста говорит: не совпадает, в то время как когда я проверяю регулярное выражение в https://pythex.org/, оно работает просто отлично.

так что не совпадает?класс не найден, или результат регулярного выражения не в порядке?

Я нашел что-то, что близко (r) ?: http://seleniummaster.com/sitecontent/index.php/selenium-robot-framework-menu/selenium-robot-framework-python-menu/204-selenium-robot-framework-table-verification

Table Cell Should Contain    xpath=//div[@id='components_block']/table    1 1

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вот мое решение для вас.Мое решение ниже будет хранить все выходные данные «+» в виде списка.Выполните следующие шаги:

1. Найдите локатор xpath для 6-го столбца (Chg.%).Затем найдите, сколько их строк.10 строк найдено, когда я проверяю.Смотрите код ниже.Обратите внимание, как я использую это ключевое слово: GET ELEMENT COUNT

${xpath}=   Set Variable /html[1]/body[1]/div[5]/section[1]/div[6]/table[1]/tbody[1]/tr//td[6]
${rows_found}=  Get Element Count   xpath=${xpath}

2.Создайте пустой список, используя ключевое слово: CREATE LIST

${res_list}=    Create List

2. Используйте цикл FOR-IN RANGE, чтобыитерируйте по этим 10 строкам и сохраняйте результат в списке только в том случае, если он имеет текст + символ «+».Когда я использую ключевое слово GET TEXT, я передаю tr [$ {row}] в xpath во время каждой итерации.Обратите внимание, как я использую эти ключевые слова: RUN KEYWORD AND RETURN STATUS, SHOULD START WITH, APPEND TO LIST.

: FOR ${row} IN RANGE 1  ${rows_found}+1
     ${row_text}=   Get Text    xpath=/html[1]/body[1]/div[5]/section[1]/div[6]/table[1]/tbody[1]/tr[${row}]/td[6]
     ${text_contains_plus}= Run Keyword and Return Status   Should Start With   ${row_text} +
     Run Keyword If  '${text_contains_plus}' == 'True'  Append To List  ${res_list} ${row_text}

Log To Console  ${res_list}
Log ${res_list}

Однако, если вам нужно сохранить две (2) переменные, название компании с символом «+» в 6-м столбце и его текстовое значение (например, +20.11), вам необходимо добавитьнесколько строк в моем скрипте выше, но самый элегантный способ - использовать ключевые слова DICTIONARY в ROBOT Framework.Ссылка на эту ссылку: http://robotframework.org/robotframework/latest/libraries/Collections.html

0 голосов
/ 11 февраля 2019

Should Match Regexp работает, проверяя, соответствует ли строка заданному регулярному выражению - сначала нужно получить текст элемента, а затем использовать это ключевое слово:

${the text}=    Get Text    your_locator
Should Match Regexp    ${the text}    ^[+]

Подход регулярного выражения вполне хорош;Вы также можете использовать ключевое слово из библиотеки BuiltIn, которое в этом случае будет проверять то же самое:

Should Start With    ${the text}    +
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...