@@ -21,8 +21,7 @@ export type WebDriverLocator = By | ByHash | Function;
21
21
// Protractor locator strategy
22
22
export interface ProtractorLocator {
23
23
findElementsOverride :
24
- ( driver : WebDriver , using: WebElement ,
25
- rootSelector : string) => wdpromise . Promise < WebElement [ ] > ;
24
+ ( driver : WebDriver , using: WebElement , rootSelector : string) => Promise < WebElement [ ] > ;
26
25
row ?: ( index : number ) => Locator ;
27
26
column ?: ( index : string ) => Locator ;
28
27
toString ?: ( ) => string ;
@@ -79,19 +78,21 @@ export class ProtractorBy extends WebdriverBy {
79
78
*/
80
79
addLocator ( name : string , script : Function | string ) {
81
80
this [ name ] = ( ...args : any [ ] ) : ProtractorLocator => {
82
- let locatorArguments = args ;
81
+ const locatorArguments = args ;
83
82
return {
84
83
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
85
- wdpromise . Promise < WebElement [ ] > = > {
86
- let findElementArguments : any [ ] = [ script ] ;
87
- for ( let i = 0 ; i < locatorArguments . length ; i ++ ) {
88
- findElementArguments . push ( locatorArguments [ i ] ) ;
89
- }
90
- findElementArguments . push ( using) ;
91
- findElementArguments . push ( rootSelector ) ;
84
+ Promise < WebElement [ ] > = > {
85
+ let findElementArguments : any [ ] = [ script ] ;
86
+ for ( let i = 0 ; i < locatorArguments . length ; i ++ ) {
87
+ findElementArguments . push ( locatorArguments [ i ] ) ;
88
+ }
89
+ findElementArguments . push ( using) ;
90
+ findElementArguments . push ( rootSelector ) ;
92
91
93
- return driver . findElements ( By . js . apply ( By , findElementArguments ) ) ;
94
- } ,
92
+ // TODO(selenium4): clean up cast to native Promise.
93
+ return driver . findElements ( By . js . apply ( By , findElementArguments ) ) as
94
+ Promise < WebElement [ ] > ;
95
+ } ,
95
96
toString : ( ) : string => {
96
97
return 'by.' + name + '("' + Array . prototype . join . call ( locatorArguments , '", "' ) + '")' ;
97
98
}
@@ -132,10 +133,12 @@ export class ProtractorBy extends WebdriverBy {
132
133
binding ( bindingDescriptor : string ) : ProtractorLocator {
133
134
return {
134
135
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
135
- wdpromise . Promise < WebElement [ ] > = > {
136
- return driver . findElements (
137
- By . js ( clientSideScripts . findBindings , bindingDescriptor , false , using, rootSelector ) ) ;
138
- } ,
136
+ Promise < WebElement [ ] > = > {
137
+ // TODO(selenium4): clean up cast to native Promise.
138
+ return driver . findElements ( By . js (
139
+ clientSideScripts . findBindings , bindingDescriptor , false , using,
140
+ rootSelector ) ) as Promise < WebElement [ ] > ;
141
+ } ,
139
142
toString : ( ) : string => {
140
143
return 'by.binding("' + bindingDescriptor + '")' ;
141
144
}
@@ -163,10 +166,12 @@ export class ProtractorBy extends WebdriverBy {
163
166
*/
164
167
exactBinding ( bindingDescriptor : string ) : ProtractorLocator {
165
168
return {
166
- findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
167
- wdpromise . Promise < WebElement [ ] > = > {
168
- return driver . findElements (
169
- By . js ( clientSideScripts . findBindings , bindingDescriptor , true , using, rootSelector ) ) ;
169
+ findElementsOverride : (
170
+ driver : WebDriver , using: WebElement , rootSelector : string) : Promise < WebElement [ ] > = > {
171
+ // TODO(selenium4): clean up cast to native Promise.
172
+ return driver . findElements ( By . js (
173
+ clientSideScripts . findBindings , bindingDescriptor , true , using, rootSelector ) ) as
174
+ Promise < WebElement [ ] > ;
170
175
} ,
171
176
toString : ( ) : string => {
172
177
return 'by.exactBinding("' + bindingDescriptor + '")' ;
@@ -192,10 +197,12 @@ export class ProtractorBy extends WebdriverBy {
192
197
model ( model : string ) : ProtractorLocator {
193
198
return {
194
199
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
195
- wdpromise . Promise < WebElement [ ] > = > {
196
- return driver . findElements (
197
- By . js ( clientSideScripts . findByModel , model , using, rootSelector ) ) ;
198
- } ,
200
+ Promise < WebElement [ ] > = > {
201
+ // TODO(selenium4): clean up cast to native Promise.
202
+ return driver . findElements (
203
+ By . js ( clientSideScripts . findByModel , model , using, rootSelector ) ) as
204
+ Promise < WebElement [ ] > ;
205
+ } ,
199
206
toString : ( ) : string => {
200
207
return 'by.model("' + model + '")' ;
201
208
}
@@ -217,10 +224,12 @@ export class ProtractorBy extends WebdriverBy {
217
224
buttonText ( searchText : string) : ProtractorLocator {
218
225
return {
219
226
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
220
- wdpromise . Promise < WebElement [ ] > = > {
221
- return driver . findElements (
222
- By . js ( clientSideScripts . findByButtonText , searchText , using, rootSelector ) ) ;
223
- } ,
227
+ Promise < WebElement [ ] > = > {
228
+ // TODO(selenium4): clean up cast to native Promise.
229
+ return driver . findElements ( By . js (
230
+ clientSideScripts . findByButtonText , searchText , using, rootSelector ) ) as
231
+ Promise < WebElement [ ] > ;
232
+ } ,
224
233
toString : ( ) : string => {
225
234
return 'by.buttonText("' + searchText + '")' ;
226
235
}
@@ -241,10 +250,12 @@ export class ProtractorBy extends WebdriverBy {
241
250
*/
242
251
partialButtonText ( searchText : string) : ProtractorLocator {
243
252
return {
244
- findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
245
- wdpromise . Promise < WebElement [ ] > = > {
246
- return driver . findElements (
247
- By . js ( clientSideScripts . findByPartialButtonText , searchText , using, rootSelector ) ) ;
253
+ findElementsOverride : (
254
+ driver : WebDriver , using: WebElement , rootSelector : string) : Promise < WebElement [ ] > = > {
255
+ // TODO(selenium4): clean up cast to native Promise.
256
+ return driver . findElements ( By . js (
257
+ clientSideScripts . findByPartialButtonText , searchText , using, rootSelector ) ) as
258
+ Promise < WebElement [ ] > ;
248
259
} ,
249
260
toString : ( ) : string => {
250
261
return 'by.partialButtonText("' + searchText + '")' ;
@@ -257,32 +268,35 @@ export class ProtractorBy extends WebdriverBy {
257
268
let name = 'by.' + ( exact ? 'exactR' : 'r' ) + 'epeater' ;
258
269
return {
259
270
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
260
- wdpromise . Promise < WebElement [ ] > = > {
261
- return driver . findElements ( By . js (
262
- clientSideScripts . findAllRepeaterRows , repeatDescriptor , exact , using, rootSelector ) ) ;
263
- } ,
271
+ Promise < WebElement [ ] > = > {
272
+ // TODO(selenium4): clean up cast to native Promise.
273
+ return driver . findElements ( By . js (
274
+ clientSideScripts . findAllRepeaterRows , repeatDescriptor , exact , using,
275
+ rootSelector ) ) as Promise < WebElement [ ] > ;
276
+ } ,
264
277
toString : ( ) : string => {
265
278
return name + '("' + repeatDescriptor + '")' ;
266
279
} ,
267
280
row : ( index : number ) : ProtractorLocator => {
268
281
return {
269
282
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
270
- wdpromise . Promise < WebElement [ ] > = > {
271
- return driver . findElements ( By . js (
272
- clientSideScripts . findRepeaterRows , repeatDescriptor , exact , index , using ,
273
- rootSelector ) ) ;
274
- } ,
283
+ Promise < WebElement [ ] > = > {
284
+ return driver . findElements ( By . js (
285
+ clientSideScripts . findRepeaterRows , repeatDescriptor , exact , index ,
286
+ using , rootSelector ) ) as Promise < WebElement [ ] > ;
287
+ } ,
275
288
toString : ( ) : string => {
276
289
return name + '(' + repeatDescriptor + '").row("' + index + '")"' ;
277
290
} ,
278
291
column : ( binding : string) : ProtractorLocator => {
279
292
return {
280
293
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
281
- wdpromise . Promise < WebElement [ ] > = > {
282
- return driver . findElements ( By . js (
283
- clientSideScripts . findRepeaterElement , repeatDescriptor , exact , index , binding ,
284
- using, rootSelector ) ) ;
285
- } ,
294
+ Promise < WebElement [ ] > = > {
295
+ // TODO(selenium4): clean up cast to native Promise.
296
+ return driver . findElements ( By . js (
297
+ clientSideScripts . findRepeaterElement , repeatDescriptor , exact ,
298
+ index , binding , using, rootSelector ) ) as Promise < WebElement [ ] > ;
299
+ } ,
286
300
toString : ( ) : string => {
287
301
return name + '("' + repeatDescriptor + '").row("' + index + '").column("' +
288
302
binding + '")' ;
@@ -294,22 +308,24 @@ export class ProtractorBy extends WebdriverBy {
294
308
column : ( binding : string) : ProtractorLocator => {
295
309
return {
296
310
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
297
- wdpromise . Promise < WebElement [ ] > = > {
298
- return driver . findElements ( By . js (
299
- clientSideScripts . findRepeaterColumn , repeatDescriptor , exact , binding , using,
300
- rootSelector ) ) ;
301
- } ,
311
+ Promise < WebElement [ ] > = > {
312
+ // TODO(selenium4): clean up cast to native Promise.
313
+ return driver . findElements ( By . js (
314
+ clientSideScripts . findRepeaterColumn , repeatDescriptor , exact , binding ,
315
+ using, rootSelector ) ) as Promise < WebElement [ ] > ;
316
+ } ,
302
317
toString : ( ) : string => {
303
318
return name + '("' + repeatDescriptor + '").column("' + binding + '")' ;
304
319
} ,
305
320
row : ( index : number ) : ProtractorLocator => {
306
321
return {
307
322
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
308
- wdpromise . Promise < WebElement [ ] > = > {
309
- return driver . findElements ( By . js (
310
- clientSideScripts . findRepeaterElement , repeatDescriptor , exact , index , binding ,
311
- using, rootSelector ) ) ;
312
- } ,
323
+ Promise < WebElement [ ] > = > {
324
+ // TODO(selenium4): clean up cast to native Promise.
325
+ return driver . findElements ( By . js (
326
+ clientSideScripts . findRepeaterElement , repeatDescriptor , exact ,
327
+ index , binding , using, rootSelector ) ) as Promise < WebElement [ ] > ;
328
+ } ,
313
329
toString : ( ) : string => {
314
330
return name + '("' + repeatDescriptor + '").column("' + binding + '").row("' +
315
331
index + '")' ;
@@ -422,11 +438,12 @@ export class ProtractorBy extends WebdriverBy {
422
438
searchText = ( searchText instanceof RegExp ) ? '__REGEXP__' + searchText . toString ( ) : searchText ;
423
439
return {
424
440
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
425
- wdpromise . Promise < WebElement [ ] > = > {
426
- return driver . findElements ( By . js (
427
- clientSideScripts . findByCssContainingText , cssSelector , searchText , using,
428
- rootSelector ) ) ;
429
- } ,
441
+ Promise < WebElement [ ] > = > {
442
+ // TODO(selenium4): clean up cast to native Promise.
443
+ return driver . findElements ( By . js (
444
+ clientSideScripts . findByCssContainingText , cssSelector , searchText , using,
445
+ rootSelector ) ) as Promise < WebElement [ ] > ;
446
+ } ,
430
447
toString : ( ) : string => {
431
448
return 'by.cssContainingText("' + cssSelector + '", "' + searchText + '")' ;
432
449
}
@@ -455,10 +472,12 @@ export class ProtractorBy extends WebdriverBy {
455
472
options ( optionsDescriptor : string) : ProtractorLocator {
456
473
return {
457
474
findElementsOverride : ( driver : WebDriver , using: WebElement , rootSelector : string) :
458
- wdpromise . Promise < WebElement [ ] > = > {
459
- return driver . findElements (
460
- By . js ( clientSideScripts . findByOptions , optionsDescriptor , using, rootSelector ) ) ;
461
- } ,
475
+ Promise < WebElement [ ] > = > {
476
+ // TODO(selenium4): clean up cast to native Promise.
477
+ return driver . findElements ( By . js (
478
+ clientSideScripts . findByOptions , optionsDescriptor , using, rootSelector ) ) as
479
+ Promise < WebElement [ ] > ;
480
+ } ,
462
481
toString : ( ) : string => {
463
482
return 'by.option("' + optionsDescriptor + '")' ;
464
483
}
0 commit comments