You can pass arguments to keywords in Robot Framework using the [Arguments] setting within the keyword definition. Here's a breakdown of how it works:
1. Defining Keywords with Arguments:
Inside the ***Keywords*** section, when you define a keyword that accepts arguments, you use the [Arguments] setting followed by the argument names.
***Keywords***
My Keyword
[Arguments] ${arg1} ${arg2}
Log Argument 1: ${arg1}
Log Argument 2: ${arg2}
In this example, My Keyword is defined to accept two arguments: ${arg1} and ${arg2}.
2. Calling Keywords with Arguments:
When you call a keyword that has arguments, you provide the values for those arguments after the keyword name, separated by two spaces.
***Test Cases***
My Test Case
My Keyword value1 value2
Here, My Keyword is called with the values "value1" and "value2" for ${arg1} and ${arg2}, respectively.
3. Default Values for Arguments:
You can provide default values for arguments. If a value is not provided when the keyword is called, the default value will be used.
***Keywords***
My Keyword
[Arguments] ${arg1} ${arg2}=default_value
Log Argument 1: ${arg1}
Log Argument 2: ${arg2}
***Test Cases***
My Test Case
My Keyword value1 # ${arg2} will use the default value "default_value"
My Keyword value1 another_value # ${arg2} will be "another_value"
4. Named Arguments:
You can use named arguments to specify the values for arguments by their names. This can improve readability, especially when a keyword has many arguments.
***Keywords***
My Keyword
[Arguments] ${arg1} ${arg2} ${arg3}
Log Argument 1: ${arg1}
Log Argument 2: ${arg2}
Log Argument 3: ${arg3}
***Test Cases***
My Test Case
My Keyword arg2=second_value arg1=first_value arg3=third_value
5. Variable Arguments (*args):
You can use *args to define a keyword that can accept a variable number of arguments. These arguments are passed as a list.
***Keywords***
My Keyword
[Arguments] *args
Log Many @{args}
***Test Cases***
My Test Case
My Keyword one two three
6. Keyword Arguments (**kwargs):
You can use **kwargs to define a keyword that can accept a variable number of keyword arguments. These arguments are passed as a dictionary.
***Keywords***
My Keyword
[Arguments] **kwargs
Log ${kwargs}
***Test Cases***
My Test Case
My Keyword name=John age=30 city=New York
7. Combining Argument Types:
You can combine different argument types in a single keyword definition.
***Keywords***
My Keyword
[Arguments] ${arg1} ${arg2}=default *args **kwargs
Log ${arg1}
Log ${arg2}
Log Many @{args}
Log ${kwargs}