Как связать ключевое слово, определенное пользователем фреймворка робота, с другим ключевым словом, определенным пользователем - PullRequest
1 голос
/ 10 июля 2020

Я новичок в robot framework, мне всего несколько дней ... Я хочу автоматизировать одно из наших веб-приложений, используя Robot Framework, и я использую настройку объектной модели страницы, где

  1. У меня есть ключевые слова, определенные в файле (Resources/fileKeywords.robot)
  2. У меня также есть файл location.py в отдельной папке (PageObjects/locators.py), который содержит веб-элементы.
  3. Тестовые примеры определены в отдельной папке называется "TestCases"

Теперь у меня в приложении такая ситуация. Я должен выбрать файл CSV для загрузки в приложение. Для этого есть кнопка обзора, которую я должен нажать, чтобы открыть диалоговое окно открытия файла windows, оттуда он выберет файл CSV из указанной папки c и нажмите «Открыть» в диалоговом окне файла, чтобы завершить файл. выбор. После выбора файла появляется кнопка "Import" выбранного файла. После этого файл отображается в таблице, и я должен щелкнуть соответствующий загруженный файл, чтобы продолжить.

Для этого я определил несколько таких ключевых слов, как это *** Ключевые слова ***

File name for Upload
   ${CSVfileName}=  read_csv_file   ${CsvFileFolder} #read_csv_file is a python class which returns csv 
     file. Let's say acb.csv

Click uploaded file
   click element ${CSVfileName}

В Click uploaded file я пытаюсь сослаться на скалярную переменную ${CSVfileName} внутри элемента html, чтобы выполнить действие щелчка на загруженном файле (like xpath://span[contains(text(),'abc.csv')], но я получаю сообщение об ошибке. В нем написано: «Определение переменной не найдено»

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

Все, что я хочу знать, это: как ссылаться на пользовательскую переменную (в моем случае ${CSVfileName}) из ключевого слова (в моем случае «Имя файла для Загрузить ») в другом разделе ключевых слов (в моем случае« Щелкните загруженный файл »)

Извините, если я немного запутался, или если он не принадлежит к правильному форуму. Цените всю вашу помощь здесь.

1 Ответ

0 голосов
/ 10 июля 2020

Это немного сбивает с толку, чтобы понять, что вы имеете в виду. Но я попробую, и если это не правильно, потому что я чего-то не понял, скажите об этом в комментариях.

Думаю, у вас есть эти два ключевых слова:

*** Keywords ***
File name for Upload
    ...
    ${CSVfileName}= ...
    ...

Click uploaded file
    ...

Теперь, если Я понимаю, вы создаете переменную ${CSVfileName} в File name for Upload и хотите использовать переменную в Click uploaded file.

В этом случае у вас есть примерно 2 варианта:

1 / Вы определяете переменную в File name for Upload как глобальную переменную с ключевым словом Set Global Variable

*** Keywords ***
File name for Upload
    ...
    Set Global Variable    ${CSVfileName}    ...
    ...


Click uploaded file
    ...
    ${CSVfileName}= ...
    ...

Недостаток в том, что вам нужно убедиться, что File name for Upload всегда будет вызываться перед каждым другим использованием переменной . Объявление и назначение переменных также скрыты в ключевом слове, что, на мой взгляд, делает его немного менее понятным.

2 / Вы возвращаетесь из File name for Upload и параметризуете Click uploaded file:

*** Keywords ***
File name for Upload
    ...
    ${CSVfileName}    ...
    [Return]    ${CSVfileName}
    ...

Click uploaded file
    [Arguments]    ${CSVfileName}
    ...

И вы, скорее всего, использовали бы его в таком тесте:

*** Test Cases ***
Upload File Test
    ...
    ${CSVfileName}=    File name for Upload
    Click uploaded file    ${CSVfileName}
    ...    

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

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