diff --git a/lib/browser.ts b/lib/browser.ts index 82807ae3b..ace8e614b 100644 --- a/lib/browser.ts +++ b/lib/browser.ts @@ -1203,4 +1203,39 @@ export class ProtractorBrowser extends AbstractExtendedWebDriver { return !!wdpromise.ControlFlow; } } + + /** + * Clicks on the specified element, provided it's visible. + * + * @template T + * @param {ElementFinder} element + * @returns {wdpromise.Promise} + * @memberof ProtractorBrowser + */ + click(element: ElementFinder): wdpromise.Promise { + return this.driver.executeScript('argments[0].click();', element); + } + + /** + * Scrolls to the specified element. + * + * @template T + * @param {ElementFinder} element + * @returns {wdpromise.Promise} + * @memberof ProtractorBrowser + */ + scrollIntoView(element: ElementFinder): wdpromise.Promise; + scrollIntoView(element: ElementFinder, alignToTop?: boolean): wdpromise.Promise; + scrollIntoView(element: ElementFinder, scrollIntoViewOptions?: Object): wdpromise.Promise; + scrollIntoView(element: ElementFinder, alignToTopOrViewOptions?: boolean|Object): + wdpromise.Promise { + // TypeScript overloads should cover the syntax: + // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView + if (alignToTopOrViewOptions) { + return this.driver.executeScript( + 'arguments[0].scrollIntoView(alignToTopOrViewOptions);', element); + } else { + return this.driver.executeScript('arguments[0].scrollIntoView();', element); + } + } }