如何使用seleniumlibrary在robot框架的测试用例中多次运行特定关键字?

如何使用seleniumlibrary在robot框架的测试用例中多次运行特定关键字?,selenium,robotframework,data-driven-tests,Selenium,Robotframework,Data Driven Tests,我想在一个测试用例中执行两个关键字,其中一个关键字只执行一次,另一个关键字执行多次。请查找以下代码以了解执行的逻辑: *** Settings *** Test Setup OPEN CHROME BROWSER Test Teardown CLOSE CHROME BROWSER Test Template KEYWORD1 Force Tags Smoke *** Test Cases *** userid

我想在一个测试用例中执行两个关键字,其中一个关键字只执行一次,另一个关键字执行多次。请查找以下代码以了解执行的逻辑:

 *** Settings ***
 Test Setup         OPEN CHROME BROWSER
 Test Teardown     CLOSE CHROME BROWSER
 Test Template     KEYWORD1
 Force Tags         Smoke

 *** Test Cases ***       userid         userpass      content
 VALID CREDENTIAL    userid@mysite.com    mypass      CONTENT A
                                                      CONTENT B
                                                      CONTENT C
 *** Keywords ***
--------------------------------------------------------------------------
KEYWORD 1
[Arguments]  ${userid} {userpass}
GO TO LOGIN PAGE
ENTER USERID
ENTER PASSWORD
CLICK ON LOGIN BUTTON
-----needs to run once and then KEYWORD 2 should run thrice---------------
KEYWORD 2
[Arguments] ${content}
CLICK ON CONTENT TILE  ${content}
DO SOME ACTION
GO TO HOME
我希望“关键字1”只执行一次,“关键字2”根据内容列表重复三次。请指导我如何处理这件事

当前问题: 在继续第二个测试时,它要求再次通过userid和userpass

我想要达到的目标:
登录一次web门户(关键字1)。使用内容A作为参数运行关键字2,然后使用内容B作为参数,最后使用内容C。每次需要更改内容时,我都不应该登录。

您可以创建另一个关键字,如下所示

Execute Keyword Multiple Times
    [Arguments]    ${keyword_name}    @{params}
    FOR    ${i}    IN    @{params}
        Run Keyword    ${keyword_name}    ${i}
    END
你可以称之为

Execute Keyword Multiple Times    KEYWORD 2    CONTENT A    CONTENT B ...
如果需要提供多个参数,可以使用dict


我建议你用另一种方法:给关键字2nargs加一个循环。代码将更容易理解。

您可以创建另一个关键字,如下所示

Execute Keyword Multiple Times
    [Arguments]    ${keyword_name}    @{params}
    FOR    ${i}    IN    @{params}
        Run Keyword    ${keyword_name}    ${i}
    END
*** Settings ***
Test Setup        KEYWORD1  ${reg_userid}  ${reg_userpass}
Test Teardown     CLOSE CHROME BROWSER
Test Template     KEYWORD2  ${content}
Force Tags         Smoke

*** Test Cases ***      content
VALID CREDENTIAL       CONTENT A
                       CONTENT B
                       CONTENT C
*** Keywords ***
#------------------------KEYWORD 1 runs once--------------------------------
KEYWORD 1
  [Arguments]  ${userid} {userpass}
  OPEN CHROME BROWSER
  GO TO LOGIN PAGE
  ENTER USERID
  ENTER PASSWORD
  CLICK ON LOGIN BUTTON
#------------------------KEYWORD 2 runs thrice-----------------------------
KEYWORD 2
  [Arguments] ${content}
  CLICK ON CONTENT TILE  ${content}
  DO SOME ACTION
  GO TO HOME

***Variables***
${reg_userid}      test@test.com
${reg_userpass}    password
你可以称之为

Execute Keyword Multiple Times    KEYWORD 2    CONTENT A    CONTENT B ...
如果需要提供多个参数,可以使用dict

我建议你用另一种方法:给关键字2nargs加一个循环。代码将更容易理解。

您需要的是来自库的

*** Settings ***
Test Setup        KEYWORD1  ${reg_userid}  ${reg_userpass}
Test Teardown     CLOSE CHROME BROWSER
Test Template     KEYWORD2  ${content}
Force Tags         Smoke

*** Test Cases ***      content
VALID CREDENTIAL       CONTENT A
                       CONTENT B
                       CONTENT C
*** Keywords ***
#------------------------KEYWORD 1 runs once--------------------------------
KEYWORD 1
  [Arguments]  ${userid} {userpass}
  OPEN CHROME BROWSER
  GO TO LOGIN PAGE
  ENTER USERID
  ENTER PASSWORD
  CLICK ON LOGIN BUTTON
#------------------------KEYWORD 2 runs thrice-----------------------------
KEYWORD 2
  [Arguments] ${content}
  CLICK ON CONTENT TILE  ${content}
  DO SOME ACTION
  GO TO HOME

***Variables***
${reg_userid}      test@test.com
${reg_userpass}    password
示例:

重复关键字5次返回
重复关键字${var}某些关键字arg1 arg2
重复关键字2分钟某些关键字arg1 arg2
你需要的是从图书馆借来的书

示例:

重复关键字5次返回
重复关键字${var}某些关键字arg1 arg2
重复关键字2分钟某些关键字arg1 arg2

您的代码无法运行,因为它使用了名为
关键字
的关键字,但您尚未定义该关键字。@BryanOakley这是一个示例代码,只是逻辑而已。让我重新格式化我的代码,并告诉您我遇到的最新一个。@BryanOakley重新格式化已完成。请检查您的代码是否无法运行,因为它使用了名为
keyword
的关键字,但您尚未定义该关键字。@BryanOakley这是一个示例代码,这只是逻辑。让我重新格式化我的代码,并告诉您我一直使用的最新代码。@BryanOakley重新格式化完成,请检查