Difference between revisions of "Creating a Custom Command"
(→Useful suggestions) |
|||
Line 65: | Line 65: | ||
After that you have to see how this Javascript works. If the menu is allocated on memory, perhaps it is better to interact with javascript directly with that objects. If it is not, you should interact with the 'document' object, or with 'this', to ask for an specific object on the html. | After that you have to see how this Javascript works. If the menu is allocated on memory, perhaps it is better to interact with javascript directly with that objects. If it is not, you should interact with the 'document' object, or with 'this', to ask for an specific object on the html. | ||
+ | |||
+ | |||
+ | == Output == | ||
+ | When we need to capture a value from the page (a string) using a custom command, we can use the built-in variable _resultCC. Inside the custom command code we save the desired value into this variable, and after the execution of the CC we can use the variable and its value in other GXtest commands. | ||
+ | |||
+ | This is only valid when the custom command is defined as an action or event command (is not available in validations). | ||
== Common Problems == | == Common Problems == |
Revision as of 14:02, 24 July 2014
Custom Commands give GXtest the flexibility to create new commands expressing action or validations to be performed in JavaScript language.
Contents |
Creating a Custom Command
Open this menu to create Custom Command.
The following screen will open where you can enter the JavaScript code to be run when the command is run:
You need to choose a name, which will be used to reference it, and a description of the command.
Then you must choose the kind of command:
- Action
- Event
- Validation
Then you need to choose for which versions of GeneXus the command is valid.
In the JS text box, a JavaScript template is displayed that must be respected in order to implement the command.
If the JavaScript function is implemented it is possible to consult values from (v8, v9, v10, undefined) and currentLanguage (java, .NET, undefined) if it is necessary that different actions are necessary depending on these parameters. Además se les puede pasar un parámetro en ParamJS.
You will recieve OK from the result variable if everything went well or an error message if it failed.
In the following example you can see how to use the information provided by GXtest in the parameters, taking different actions according with the generated language (java or dot net).
if (currentLanguage=="Java")
{
}
else if (currentLanguage=="net")
{
}
else
{
}
You can do something similar with the GeneXus version.
You can see more examples here.
Using a Custom Command
Once you have created a Custom Command it is ready to be used by GXtest the same way as any other native command, allowing you to add it and edit it manually.
The only limiting factor is the fact that you can't record it automatically using the toolbar.
Useful suggestions
In order to creat the JS function easier, you can use any tool like Web Developer from Google Chrome, or Firebug in Firefox, to look the elements which you can use to do different actions.
For example, if we want to do a command to access a menu developed with JavaScript, with these tools we can see how the navigation is performed, even if it is done with an event or if it is generated with a dynamic link.
After that you have to see how this Javascript works. If the menu is allocated on memory, perhaps it is better to interact with javascript directly with that objects. If it is not, you should interact with the 'document' object, or with 'this', to ask for an specific object on the html.
Output
When we need to capture a value from the page (a string) using a custom command, we can use the built-in variable _resultCC. Inside the custom command code we save the desired value into this variable, and after the execution of the CC we can use the variable and its value in other GXtest commands.
This is only valid when the custom command is defined as an action or event command (is not available in validations).
Common Problems
- Thr custom command works in Internet Explorer but it doesn't in FireFox. The error message says that the "document" or "alert" variable are not defined for example
- In order to make it work in Firefox, you would need to add "window" before those objects.
"window.documment.writeln"...)"