11import * as chrome from 'selenium-webdriver/chrome'
2- import { By , until , Builder , WebDriver , Locator , promise } from 'selenium-webdriver'
2+ import { By , until , Builder , WebDriver , Locator , promise , WebElement , Condition } from 'selenium-webdriver'
33import { config } from './common'
44
55interface PathPart {
@@ -35,7 +35,7 @@ function convertPath(path: string): Array<PathPart> {
3535}
3636
3737// Fake findByXPath for simple XPath expressions to allow usage with shadow dom
38- function findByXPath ( node : webdriver . WebElement , path : string ) : webdriver . promise . Promise < webdriver . WebElement > {
38+ function findByXPath ( node : WebElement , path : string ) : promise . Promise < WebElement > {
3939 // if there wasn't polymer with it's shadow dom useage one would like to use:
4040
4141 let paths = convertPath ( path ) ;
@@ -45,7 +45,7 @@ function findByXPath(node: webdriver.WebElement, path: string): webdriver.promis
4545 n = n . then ( nd => nd . findElements ( By . css ( p . tagName + ":nth-child(" + ( p . index ) + ")" ) ) ) . then ( elems => {
4646 if ( elems == null || elems . length == 0 ) { console . log ( "not found" ) ; return null } ;
4747 return elems [ 0 ] ;
48- } ) . thenCatch ( e => { console . log ( "REJECTED PROMISE" , e ) ; return null ; } ) ;
48+ } ) . catch ( e => { console . log ( "REJECTED PROMISE" , e ) ; return null ; } ) ;
4949 }
5050 return n ;
5151
@@ -83,7 +83,7 @@ function elemNull(v: any) {
8383// driver.findElement(By.xpath("//tbody/tr[1]/td[1]")).getText().then(...) can throw a stale element error:
8484// thus we're using a safer way here:
8585export function testTextContains ( driver : WebDriver , xpath : string , text : string ) {
86- return driver . wait ( new until . Condition < boolean > ( `testTextContains ${ xpath } ${ text } ` ,
86+ return driver . wait ( new Condition < boolean > ( `testTextContains ${ xpath } ${ text } ` ,
8787 ( driver ) => shadowRoot ( driver ) . then ( elem => findByXPath ( elem , xpath ) )
8888 . then ( elem => elem == null ? elemNull ( false ) : elem . getText ( ) . then (
8989 v => v && v . indexOf ( text ) > - 1 ,
@@ -93,7 +93,7 @@ export function testTextContains(driver: WebDriver, xpath: string, text: string)
9393}
9494
9595export function testTextNotContained ( driver : WebDriver , xpath : string , text : string ) {
96- return driver . wait ( new until . Condition < boolean > ( `testTextNotContained ${ xpath } ${ text } ` ,
96+ return driver . wait ( new Condition < boolean > ( `testTextNotContained ${ xpath } ${ text } ` ,
9797 ( driver ) => shadowRoot ( driver ) . then ( elem => findByXPath ( elem , xpath ) )
9898 . then ( elem => elem == null ? elemNull ( false ) : elem . getText ( ) . then (
9999 v => v && v . indexOf ( text ) == - 1 ,
@@ -103,7 +103,7 @@ export function testTextNotContained(driver: WebDriver, xpath: string, text: str
103103}
104104
105105export function testClassContains ( driver : WebDriver , xpath : string , text : string ) {
106- return driver . wait ( new until . Condition < boolean > ( `testClassContains ${ xpath } ${ text } ` ,
106+ return driver . wait ( new Condition < boolean > ( `testClassContains ${ xpath } ${ text } ` ,
107107 ( driver ) => shadowRoot ( driver ) . then ( elem => findByXPath ( elem , xpath ) )
108108 . then ( elem => elem == null ? elemNull ( false ) : elem . getAttribute ( "class" ) . then (
109109 v => v && v . indexOf ( text ) > - 1 ,
@@ -114,7 +114,7 @@ export function testClassContains(driver: WebDriver, xpath: string, text: string
114114
115115export function testElementLocatedByXpath ( driver : WebDriver , xpath : string ) {
116116 // return driver.wait(until.elementLocated(By.xpath(xpath)), 3000);
117- return driver . wait ( new until . Condition < boolean > ( `testElementLocatedByXpath ${ xpath } ` , ( driver ) =>
117+ return driver . wait ( new Condition < boolean > ( `testElementLocatedByXpath ${ xpath } ` , ( driver ) =>
118118 shadowRoot ( driver ) . then ( elem =>
119119 elem == null ? elemNull ( false ) : findByXPath ( elem , xpath ) . then (
120120 ( v :any ) => v ,
@@ -125,23 +125,23 @@ export function testElementLocatedByXpath(driver: WebDriver, xpath: string) {
125125
126126export function testElementNotLocatedByXPath ( driver : WebDriver , xpath : string )
127127{
128- return driver . wait ( new until . Condition < boolean > ( `testElementNotLocatedByXPath ${ xpath } ` ,
128+ return driver . wait ( new Condition < boolean > ( `testElementNotLocatedByXPath ${ xpath } ` ,
129129 ( driver ) => shadowRoot ( driver ) . then ( elem => findByXPath ( elem , xpath ) ) . then (
130130 v => ! v ,
131131 err => console . log ( "ignoring error in testElementNotLocatedByXPath for xpath = " + xpath , err . toString ( ) . split ( "\n" ) [ 0 ] ) )
132132 ) , config . TIMEOUT ) ;
133133}
134134
135135export function testElementLocatedById ( driver : WebDriver , id : string ) {
136- return driver . wait ( new until . Condition < boolean > ( `testElementLocatedById ${ id } ` ,
137- ( driver ) => shadowRoot ( driver ) . then ( elem => elem . isElementPresent ( By . id ( id ) ) ) . then (
136+ return driver . wait ( new Condition < boolean > ( `testElementLocatedById ${ id } ` ,
137+ ( driver ) => shadowRoot ( driver ) . then ( elem => elem . findElement ( By . id ( id ) ) ) . then (
138138 v => true ,
139139 err => console . log ( "ignoring error in testElementLocatedById for id = " + id , err . toString ( ) . split ( "\n" ) [ 0 ] ) )
140140 )
141141 , config . TIMEOUT ) ;
142142}
143143
144- function retry < T > ( retryCount : number , driver : WebDriver , fun : ( driver : WebDriver ) => webdriver . promise . Promise < T > ) : webdriver . promise . Promise < T > {
144+ function retry < T > ( retryCount : number , driver : WebDriver , fun : ( driver : WebDriver ) => promise . Promise < T > ) : promise . Promise < T > {
145145 return fun ( driver ) . then (
146146 val => { return val ; } ,
147147 err => { console . log ( "retry failed" ) ;
@@ -154,16 +154,16 @@ function retry<T>(retryCount: number, driver: WebDriver, fun : (driver: WebDriv
154154 ) ;
155155}
156156
157- export function forPromRec ( priorResults : any [ ] , from : number , to : number , fun : ( idx : number ) => webdriver . promise . Promise < any > ) : webdriver . promise . Promise < any [ ] > {
157+ export function forPromRec ( priorResults : any [ ] , from : number , to : number , fun : ( idx : number ) => promise . Promise < any > ) : promise . Promise < any [ ] > {
158158 if ( from >= to ) throw "fromProm from (=" + from + ") >=to (=" + to + ")" ;
159159 else if ( from < to - 1 ) return fun ( from ) . then ( val => forPromRec ( priorResults . concat ( [ val ] ) , from + 1 , to , fun ) ) ;
160160 else return fun ( from ) . then ( val => priorResults . concat ( [ val ] ) ) ;
161161}
162162
163- export function forProm ( from : number , to : number , fun : ( idx : number ) => webdriver . promise . Promise < any > ) : webdriver . promise . Promise < any [ ] > {
163+ export function forProm ( from : number , to : number , fun : ( idx : number ) => promise . Promise < any > ) : promise . Promise < any [ ] > {
164164 return forPromRec ( [ ] , from , to , fun ) ;
165165}
166- // export function forProm(from: number, to: number, fun : (idx: number) => webdriver. promise.Promise<any>): webdriver. promise.Promise<any[]> {
166+ // export function forProm(from: number, to: number, fun : (idx: number) => promise.Promise<any>): promise.Promise<any[]> {
167167// let res: any[] = [];
168168// let p = fun(from);
169169// for (let i=from+1; i<to; i++) {
@@ -195,7 +195,7 @@ export function clickElementByXPath(driver: WebDriver, xpath: string) {
195195 // return to(driver.findElement(By.xpath(xpath)).click());
196196}
197197
198- export function getTextByXPath ( driver : WebDriver , xpath : string ) : webdriver . promise . Promise < string > {
198+ export function getTextByXPath ( driver : WebDriver , xpath : string ) : promise . Promise < string > {
199199 let count = 0 ;
200200 return retry ( 5 , driver , ( driver ) => { count ++ ;
201201 if ( count > 1 && config . LOG_DETAILS ) console . log ( "getTextByXPath " , xpath , " attempt #" , count ) ;
@@ -206,6 +206,6 @@ export function getTextByXPath(driver: WebDriver, xpath: string): webdriver.prom
206206 // return to(driver.findElement(By.xpath(xpath)).getText());
207207}
208208
209- function shadowRoot ( driver : WebDriver ) : webdriver . promise . Promise < webdriver . WebElement > {
209+ function shadowRoot ( driver : WebDriver ) : promise . Promise < WebElement > {
210210 return useShadowRoot ? driver . executeScript ( 'return document.querySelector("main-element").shadowRoot' ) : driver . findElement ( By . tagName ( "body" ) ) ;
211211}
0 commit comments