|
1 |
| -import {By, error, ILocation, ISize, promise as wdpromise, WebDriver, WebElement, WebElementPromise} from 'selenium-webdriver'; |
| 1 | +import {By, error as wderror, ILocation, ISize, promise as wdpromise, WebDriver, WebElement, WebElementPromise} from 'selenium-webdriver'; |
2 | 2 |
|
3 | 3 | import {ElementHelper, ProtractorBrowser} from './browser';
|
4 | 4 | import {IError} from './exitCodes';
|
5 | 5 | import {Locator} from './locators';
|
6 | 6 | import {Logger} from './logger';
|
7 | 7 |
|
8 |
| -let webdriver = require('selenium-webdriver'); |
9 | 8 | let clientSideScripts = require('./clientsidescripts');
|
10 | 9 |
|
11 | 10 | let logger = new Logger('element');
|
@@ -239,7 +238,7 @@ export class ElementArrayFinder extends WebdriverWebElement {
|
239 | 238 |
|
240 | 239 | return filterFn(elementFinder, index);
|
241 | 240 | });
|
242 |
| - return webdriver.promise.all(list).then((resolvedList: any) => { |
| 241 | + return wdpromise.all(list).then((resolvedList: any) => { |
243 | 242 | return parentWebElements.filter((parentWebElement: WebElement, index: number) => {
|
244 | 243 | return resolvedList[index];
|
245 | 244 | });
|
@@ -276,21 +275,16 @@ export class ElementArrayFinder extends WebdriverWebElement {
|
276 | 275 | * @param {number|webdriver.promise.Promise} index Element index.
|
277 | 276 | * @returns {ElementFinder} finder representing element at the given index.
|
278 | 277 | */
|
279 |
| - get(index: number): ElementFinder { |
280 |
| - let getWebElements = () => { |
281 |
| - return webdriver.promise.all([index, this.getWebElements()]).then((results: any) => { |
282 |
| - let i = results[0]; |
283 |
| - let parentWebElements = results[1]; |
284 |
| - |
| 278 | + get(index: number|wdpromise.Promise<number>): ElementFinder { |
| 279 | + let getWebElements = (): wdpromise.Promise<WebElement[]> => { |
| 280 | + return wdpromise.all<any>([index, this.getWebElements()]).then(([i, parentWebElements]) => { |
285 | 281 | if (i < 0) {
|
286 |
| - // wrap negative indices |
287 |
| - i = parentWebElements.length + i; |
| 282 | + i += parentWebElements.length; |
288 | 283 | }
|
289 | 284 | if (i < 0 || i >= parentWebElements.length) {
|
290 |
| - throw new error.NoSuchElementError( |
291 |
| - 'Index out of bound. ' + |
292 |
| - 'Trying to access element at index: ' + index + ', but there are ' + |
293 |
| - 'only ' + parentWebElements.length + ' elements that match ' + |
| 285 | + throw new wderror.NoSuchElementError( |
| 286 | + 'Index out of bound. Trying to access element at index: ' + index + |
| 287 | + ', but there are only ' + parentWebElements.length + ' elements that match ' + |
294 | 288 | 'locator ' + this.locator_.toString());
|
295 | 289 | }
|
296 | 290 | return [parentWebElements[i]];
|
@@ -383,7 +377,7 @@ export class ElementArrayFinder extends WebdriverWebElement {
|
383 | 377 | * array of the located {@link webdriver.WebElement}s.
|
384 | 378 | */
|
385 | 379 | $$(selector: string): ElementArrayFinder {
|
386 |
| - return this.all(webdriver.By.css(selector)); |
| 380 | + return this.all(By.css(selector)); |
387 | 381 | }
|
388 | 382 |
|
389 | 383 | /**
|
@@ -427,7 +421,7 @@ export class ElementArrayFinder extends WebdriverWebElement {
|
427 | 421 | return arr.length;
|
428 | 422 | },
|
429 | 423 | (err: IError) => {
|
430 |
| - if (err.code && err.code == new webdriver.error.NoSuchElementError()) { |
| 424 | + if (err.code && err.code == (new wderror.NoSuchSessionError() as any).code) { |
431 | 425 | return 0;
|
432 | 426 | } else {
|
433 | 427 | throw err;
|
@@ -821,7 +815,7 @@ export class ElementFinder extends WebdriverWebElement {
|
821 | 815 | let getWebElements = (): wdpromise.Promise<WebElement[]> => {
|
822 | 816 | return elementArrayFinder.getWebElements().then((webElements: WebElement[]) => {
|
823 | 817 | if (webElements.length === 0) {
|
824 |
| - throw new error.NoSuchElementError( |
| 818 | + throw new wderror.NoSuchElementError( |
825 | 819 | 'No element found using locator: ' + elementArrayFinder.locator().toString());
|
826 | 820 | } else {
|
827 | 821 | if (webElements.length > 1) {
|
@@ -999,7 +993,7 @@ export class ElementFinder extends WebdriverWebElement {
|
999 | 993 | * @returns {ElementArrayFinder}
|
1000 | 994 | */
|
1001 | 995 | $$(selector: string): ElementArrayFinder {
|
1002 |
| - return this.all(webdriver.By.css(selector)); |
| 996 | + return this.all(By.css(selector)); |
1003 | 997 | }
|
1004 | 998 |
|
1005 | 999 | /**
|
@@ -1041,7 +1035,7 @@ export class ElementFinder extends WebdriverWebElement {
|
1041 | 1035 | * @returns {ElementFinder}
|
1042 | 1036 | */
|
1043 | 1037 | $(selector: string): ElementFinder {
|
1044 |
| - return this.element(webdriver.By.css(selector)); |
| 1038 | + return this.element(By.css(selector)); |
1045 | 1039 | }
|
1046 | 1040 |
|
1047 | 1041 | /**
|
@@ -1071,15 +1065,15 @@ export class ElementFinder extends WebdriverWebElement {
|
1071 | 1065 | return true; // is present, whether it is enabled or not
|
1072 | 1066 | },
|
1073 | 1067 | (err: any) => {
|
1074 |
| - if (err.code == webdriver.error.ErrorCode.STALE_ELEMENT_REFERENCE) { |
| 1068 | + if (err.code == (new wderror.StaleElementReferenceError() as any).code) { |
1075 | 1069 | return false;
|
1076 | 1070 | } else {
|
1077 | 1071 | throw err;
|
1078 | 1072 | }
|
1079 | 1073 | });
|
1080 | 1074 | },
|
1081 | 1075 | (err: any) => {
|
1082 |
| - if (err.code == webdriver.error.ErrorCode.NO_SUCH_ELEMENT) { |
| 1076 | + if (err.code == (new wderror.NoSuchElementError() as any).code) { |
1083 | 1077 | return false;
|
1084 | 1078 | } else {
|
1085 | 1079 | throw err;
|
|
0 commit comments