Blue Prism identify using UI Automation: 2 edit fields with the same name - ui-automation

I'm working with a windows application and at a certain point I should select an edit field to be filled with some text. The problem is that next to the field it's a button and next to the button it's another field that (in the UI Automation helper) has the same name as the first one. Blue Prism is throwing an error: More than one element matched the query terms. How can I select just the first field? If I can't do that, is any option to change the name of the second field?

The easiest solution would be to check the "Match" checkbox for the "Match Index" property for each of the two entries in the Application Modeler and test to see which responds to a value of 1, and which responds to a value of 2.
It's important to note that this will more often than not make your solution more sensitive to interface changes within the target application.

Related

Update chart after changing a field in an APEX form

How do I cause APEX to refresh a chart (graph) after I change the value in a text box/select list/etc that is used as a parameter in the chart's pl/sql statement?
I'd like it to look as professional as possible and minimize the portion of the page that must be refreshed (i.e., "ajax-like", which is the standard in 2018).
Create a dynamic action on the text box/select list/etc that is changed with event "change"
Create a true action and select pl/sql and write
Begin
null;
end;
In page items to submit select your items
Create a second true action after the first and select Refresh. Then select region as affected element and select your chart. Remember that the option 'Fire on initialization' must be set to NO
See Approach B, below, for the optimal solution.
Approach A
The simplest option (that is less professional) is to modify every text box/select list/etc of interest to submit the page when the value of the text box/select list/etc changes. As an example, for the select list, go to its settings->page action on selection and change the setting to submit page.
There are two main downsides to that approach:
Most of the page will refresh, which is jarring to your user, and
If you're using a plugin, or the type of item that you're using doesn't support that approach, then you're out of luck.
Approach B
A more complex solution that yields a more professional result follows. This solution involves dynamic actions, which I will probably not fully explain here. However, the information should be enough for the user to figure it out.
Let us suppose that you have two things: (1) a select list whose value is used as a parameter in a (2) chart's sql source statement.
To get the chart to update every time you make a new choice via the select list, you need to:
Create a dynamic action for the select list of interest. You do this by clicking on the select list, going to the dynamic action tab (the lightning bolt); right-click on the item; click select dynamic action; give it a name and set the event to change and make the selection type an item and set the item to the name of the select list you're watching.
Create a true action for that dynamic action that executes pl/sql code (you can do this by modifying the show action that was created by default in 1.). Set the pl/sql code to null;. Then under items to submit, specify the name of the select list of interest.
Create a second true action that refreshes the region that contains the chart.
You'll need to make sure that the sequence assigned to 2. is a smaller number than the sequence assigned to 3.. This should happen by default, but it's an area you can get tripped up.
Inapplicable Approach C
In Apex 5.something, they added a feature called Cascading List of Values. This feature allows you to specify that one item depends on another item for its values. For example, if you have a select list that allows the user to choose a department, and then you have a second select list that allows you to choose an employee from the chosen department (which presumably obtains its values from a query involving the value chosen in the first select list), you can tell APEX to refresh the second select list whenever you update the first.
You do this by editing the second select list. Under its settings goto list of values->cascading LOV parent item(s). Add the first select list as a "reverse" dependent (aka, "parent"). This will ensure that any time the first select list is updated, the second select list is also updated.
For better or for worse, charts do not have the cascading LOV parent item(s) setting. Thus, this solution does not apply to this question.

install4j: Form with dynamic count of items/objects

My installation involves 2 steps:
Enter count of entities (could be number between 1 and 100)
Enter some details for each entity (e.g. host, port, url, etc.)
I'm able to create form for the first entity with all the input fields including validations and store entered details in variables. But I don't know how to simply reuse existing form to collect details for the remaining entities. I don't want to copy+paste this form (and variables) hundred times and use some visibility script to show only first N forms.
Is there some built-in component that could dynamically generate form/variables for each entity (based on the entered count)? In ideal case with next/previous feature, and command line support. I cannot find any help/documentation related to this problem.
I'm using install4j 6.0.4.
You can use a screen group do iterate. Right-click on the form screen and select "Create screen group from selection" from the context menu. In the configuration of the screen group, select the "Loop" property and configure its child property to set up looping. The installer variable configured in the "Loop index variable name" property can be used in the form screen.

Is it possible to modify parts of the form based on one of the field of the form?

I am using the Formula package from the Iliad web framework in Pharo. I have a model object which have a first attribute and then one to three other attributes depending of the value of the first one.
I built a form with ILFormula but couldn't find methods in Formula to change the displayed input based on changed value on the first field.
So I believe I need to add an event on the first field and do it directly but I am not sure where to begin to that within the Iliad framework.

Multiple values for one field

In GXT I want to create a form where a single field can have multiple values. so once one value is provided user should have option enter another value for the same field, similar to how we attach files in an e-mail.. what is the best way to do this?
One way to provide a button with plus symbol in the form. Clicking that button should add a field to the form dynamically. User can use that field to provide another value.
If you are talking about a single control, which can capture multiple values, can you try Multi-Select field like the one explained in this thread?

How to make a field "autocomplete"?

I can't figure out how to make a field autocomplete in ATK.
I guess it has something to do with the type "reference" but still not sure.
Suppose I'm looking for a client name in a "line" type field, then the autocomplete should list me all/topXX matching names.
Scenario 1:
Once I hit [Enter] I'd need all that row from DB loaded in a form fields so I can edit the record.
I guess this requires getting the client ID first then posting to an "edit" page then calling "loadData()" method for that ID and populate fields.
Scenario 2:
I'm assignig a job request to a client. First I find the client then I could store its ID in a hidden field to be posted then.
Any advice?
TIA
I would suggest you to go with 2 forms. First form with a single field, and when field is changed it automatically reloads second form including the parameter.
You will also need an autocomplete field. Autocomplete is somewhat buggy in 4.0, but it have been polished up in 4.1 by using a technique in http://jqueryui.com/demos/autocomplete/#combobox
For use with models and controllers and also dropdown, example is here:
http://codepad.agiletoolkit.org/reloadform
Alternative example:
http://demo.atk4.com/demo.html?t=22
Since 4.1, you can also use autocomplete fields instead of reference:
$form1->addField('autocomplete','user');