【问题标题】:How to refer robot framework user defined keyword in another user defined keyword如何在另一个用户定义的关键字中引用机器人框架用户定义的关键字
【发布时间】:2020-07-10 16:08:30
【问题描述】:

我对@9​​87654321@ 很陌生,才刚出生几天... 我希望使用Robot Framework 自动化我们的一个网络应用程序,并且我正在使用页面对象模型设置

  1. 我在文件(Resources/fileKeywords.robot) 中定义了关键字
  2. 我在一个单独的文件夹 (PageObjects/locators.py) 中还有一个 location.py 文件,其中包含 Web 元素。
  3. 测试用例在名为"TestCases" 的单独文件夹中定义

现在我的应用中出现了这样的情况。 我必须选择一个CSV 文件在应用程序中上传。 为此,我必须单击一个浏览按钮,该按钮将打开 Windows 文件打开对话框,从那里它将从特定文件夹中选择一个 CSV 文件,然后在文件对话框中单击“打开”以完成文件选择。 选择文件后,有一个按钮可以"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 中,我试图引用html 元素内的${CSVfileName} 标量变量以对上传的文件执行点击操作 (like xpath://span[contains(text(),'abc.csv')] 但我收到错误。它说“未找到变量定义”

我可以将两者保留在同一个关键字下,并从我的测试用例中调用该关键字。但为了更清楚,我想分开。

我只想知道: 如何在另一个关键字部分(在我的情况下为“单击上传的文件”)中的关键字(在我的情况下为“上传的文件名”)引用用户定义的变量(在我的情况下为 ${CSVfileName}

对不起,如果我有点混乱或者它不属于正确的论坛。 在这里感谢您的所有帮助。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    找到您的意思有点令人困惑。但是我会尝试,如果因为我没有理解某些内容而不正确,请在 cmets 中说出来。

    我认为你有这两个关键字:

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

    现在,如果我理解的话,您在File name for Upload 中创建变量${CSVfileName},并且您想在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}
        ...    
    

    这种另一种解决方案使其更灵活,也更清晰。您会立即看到在实际调用关键字之前需要提供一些参数。关键字可以按任意顺序调用,更加独立。

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 2021-01-02
      • 1970-01-01
      • 2018-08-01
      • 2020-04-21
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多