PDA

View Full Version : Component Query locator matches multiple items - Recoder, grid cell



Roman Torskyi
14 Jun 2017, 4:24 AM
Hi
I have a question:


When I go to the cell and adding a new field, later I have a problem with locating the components.




Fields for time, work type and fields to delete are the same.


On every reload page I have another dynamic id


The reference field also not good solution for me, because on one page I have the same components, and the locator does not know where to click.

ST.play([
{ type: "tap", target: "timefield[reference="fromTime"]", x: 400, y: 379 },
{ type: "tap", target: "timefield[reference="fromTime"] timepicker => [data-recordindex="0"]", x: 745, y: 577 },
{ type: "tap", target: "timefield[reference="toTime"]", x: 382, y: 420 },
{ type: "tap", target: "timefield[reference="toTime"] timepicker => [data-recordindex="217"]", x: 822, y: 845 },
{ type: "tap", target: "controls.rota.rotaplaneditgrid[reference="rotaPlanEditGrid"] => [data-recordindex="1"]", x: 998, y: 577 },
{ type: "tap", target: "combo[name="workTypeId"]", x: 271, y: 16 },
{ type: "tap", target: "combo[name="workTypeId"] boundlist => [data-recordindex="0"]", x: 56, y: 16 },
{ type: "tap", target: "button[text="SAVE"]", x: 22, y: 16 },

]);


Error:
Component Query locator matches multiple items



Every time when I reload the page, the component coordinates was changed



These codes doesn't work:


ST.grid('mygrid').rowAt(0).click();


ST.grid('mygrid')
.rowAt(1)
.cellAt(1)

See attachments
56434
56435
56437

craigcomstock
16 Jun 2017, 10:38 AM
I'm not sure I understand how the ST.grid('mygrid').rowAt(0).click() and ST.grid('mygrid').rowAt(1).cellAt(1) don't work. Do they fail to be located and cause the test to fail?

I tried a simple test of our Futures API and grids on our Classic Kitchen Sink. Maybe this example will help determine the cause of your problem:

Scenario URL: http://examples.sencha.com/extjs/6.5.0/examples/kitchensink/#array-grid

Test code:

describe("test", function() {
it("should pass", function() {
ST.grid('array-grid').rowAt(2).cellAt(1).text('$29.94');
});
});