【问题标题】:RobotFramework : scope of variablesRobotFramework:变量范围
【发布时间】:2018-09-24 15:50:10
【问题描述】:

${testAccount} 变量有问题。 当我在用户关键字“修改用户名”中修改这个变量时,日志通知我修改是正确的。 当我在关键字“更改激活”中使用此变量时,它等于初始值,而不是修改后的值。

这是我写的脚本:

*** Keywords ***
Modify user name  
    Set Global Variable    ${testAccount}
    Wait Until Element Is Visible    xpath=//a[@ng-click="openCreateEditModal(tenant)"]  
    Click Element    //td[text()='${testAccount}']/following-sibling::td//a[@ng-click="openCreateEditModal(tenant)"]  
    Wait Until Page Contains    Edit an account  
    Click Element    xpath=//input[@ng-model="tenant.name"]    
    Press Key    xpath=//input[@ng-model="tenant.name"]    \\08  
    ${testAccount}=    Get Substring    ${testAccount}    \    -1
    Click Button    xpath=//button[@ng-click="valid()"]  
    Wait Until Page Contains    ${testAccount}

Change activation  
    Wait Until Element Is Visible    xpath=//a[@ng-click="openCreateEditModal(tenant)"]  
    Click Element    //td[text()='${testAccount}']/following-sibling::td//a[@ng-click="openCreateEditModal(tenant)"]  

我尝试使用关键字“设置全局变量”或“设置套件变量”,但效果并不好。也许我没有正确使用它们。

你能帮我理解一下吗?

【问题讨论】:

  • 您能否提供您尝试使用Set Suite VariableSet Global Variable 的示例?在随附的屏幕截图中,Modify user name 关键字中的 ${testAccount} 变量是本地变量,仅在此关键字内可见。
  • 请不要发布代码图片。它们没用,因为代码不会出现在搜索中,我们也无法复制和粘贴它。花时间直接在问题中正确复制、粘贴和格式化您的代码。
  • 您是否阅读了用户指南部分Variable priorities and scope
  • 我在 cmets 中根据需要修改了我的请求
  • 这是一个非常有趣的文档,我将保留在一边。除非我弄错了,否则我似乎没有阅读任何与我的错误相关的信息。

标签: variables robotframework


【解决方案1】:

只需在修改变量 ${testAccount} 内容的行之后添加“设置全局变量”关键字。因此,这个变量的新内容将在下面的测试用例中被考虑,直到它再次改变。

【讨论】:

    【解决方案2】:

    您可以使用设置套件变量关键字。

    点击以下链接 http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Set%20Suite%20Variable

    在第一个关键字“修改用户名”的末尾使用 Return 语句,并在第二个关键字“更改激活”中使用变量“${testAccount}”作为参数

    检查下面的代码。

    Modify user name  
      Set Suite Variable   ${testAccount}
      Wait Until Element Is Visible    xpath=//a[@ng- 
      click="openCreateEditModal(tenant)"]  
      Click Element    //td[text()='${testAccount}']/following-sibling::td//a[@ng- 
      click="openCreateEditModal(tenant)"]  
      Wait Until Page Contains    Edit an account  
      Click Element    xpath=//input[@ng-model="tenant.name"]    
      Press Key    xpath=//input[@ng-model="tenant.name"]    \\08  
      ${testAccount}=    Get Substring    ${testAccount}    \    -1
      Click Button    xpath=//button[@ng-click="valid()"]  
      Wait Until Page Contains    ${testAccount}
    
      Return   ${testAccount}
    

    Change activation ${testAccount}

     Wait Until Element Is Visible    xpath=//a[@ng-click="openCreateEditModal(tenant)"]  
     Click Element    //td[text()='${testAccount}']/following-sibling::td//a[@ng- 
     click="openCreateEditModal(tenant)"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 2014-01-31
      • 2011-02-10
      • 2020-02-07
      • 2012-12-23
      相关资源
      最近更新 更多