wip: driver ipc

This commit is contained in:
Joao Moreno
2018-04-09 21:36:43 +02:00
parent 056db45213
commit 96143f924c
3 changed files with 96 additions and 18 deletions

View File

@@ -21,16 +21,31 @@ export interface IElement {
export interface IDriver {
_serviceBrand: any;
getWindowIds(): TPromise<number[]>;
getElements(windowId: number, selector: string): TPromise<IElement[]>;
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void>;
click(windowId: number, selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise<void>;
doubleClick(windowId: number, selector: string): TPromise<void>;
move(windowId: number, selector: string): TPromise<void>;
setValue(windowId: number, selector: string, text: string): TPromise<void>;
getTitle(windowId: number): TPromise<void>;
isActiveElement(windowId: number, selector: string): TPromise<void>;
getElements(windowId: number, selector: string): TPromise<IElement[]>;
selectorExecute<P>(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P>;
}
//*END
export interface IDriverChannel extends IChannel {
call(command: 'getWindowIds'): TPromise<number[]>;
call(command: 'getElements', arg: [number, string]): TPromise<IElement[]>;
call(command: 'dispatchKeybinding', arg: [number, string]): TPromise<void>;
call(command: 'click', arg: [number, string, number | undefined, number | undefined]): TPromise<void>;
call(command: 'doubleClick', arg: [number, string]): TPromise<void>;
call(command: 'move', arg: [number, string]): TPromise<void>;
call(command: 'setValue', arg: [number, string, string]): TPromise<void>;
call(command: 'getTitle', arg: [number]): TPromise<void>;
call(command: 'isActiveElement', arg: [number, string]): TPromise<void>;
call(command: 'getElements', arg: [number, string]): TPromise<IElement[]>;
call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise<any>;
call(command: string, arg: any): TPromise<any>;
}
@@ -41,8 +56,15 @@ export class DriverChannel implements IDriverChannel {
call(command: string, arg?: any): TPromise<any> {
switch (command) {
case 'getWindowIds': return this.driver.getWindowIds();
case 'getElements': return this.driver.getElements(arg[0], arg[1]);
case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg[0], arg[1]);
case 'click': return this.driver.click(arg[0], arg[1], arg[2], arg[3]);
case 'doubleClick': return this.driver.doubleClick(arg[0], arg[1]);
case 'move': return this.driver.move(arg[0], arg[1]);
case 'setValue': return this.driver.setValue(arg[0], arg[1], arg[2]);
case 'getTitle': return this.driver.getTitle(arg[0]);
case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]);
case 'getElements': return this.driver.getElements(arg[0], arg[1]);
case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], new Function(arg[2]), ...arg[2]);
}
return undefined;
@@ -59,12 +81,40 @@ export class DriverChannelClient implements IDriver {
return this.channel.call('getWindowIds');
}
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void> {
return this.channel.call('dispatchKeybinding', [windowId, keybinding]);
}
click(windowId: number, selector: string, xoffset: number | undefined, yoffset: number | undefined): TPromise<void> {
return this.channel.call('click', [windowId, selector, xoffset, yoffset]);
}
doubleClick(windowId: number, selector: string): TPromise<void> {
return this.channel.call('doubleClick', [windowId, selector]);
}
move(windowId: number, selector: string): TPromise<void> {
return this.channel.call('move', [windowId, selector]);
}
setValue(windowId: number, selector: string, text: string): TPromise<void> {
return this.channel.call('setValue', [windowId, selector, text]);
}
getTitle(windowId: number): TPromise<void> {
return this.channel.call('getTitle', [windowId]);
}
isActiveElement(windowId: number, selector: string): TPromise<void> {
return this.channel.call('isActiveElement', [windowId, selector]);
}
getElements(windowId: number, selector: string): TPromise<IElement[]> {
return this.channel.call('getElements', [windowId, selector]);
}
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void> {
return this.channel.call('dispatchKeybinding', [windowId, keybinding]);
selectorExecute<P>(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P> {
return this.channel.call('selectorExecute', [windowId, selector, script.toString(), args]);
}
}
@@ -102,13 +152,27 @@ export class WindowDriverRegistryChannelClient implements IWindowDriverRegistry
}
export interface IWindowDriver {
getElements(selector: string): TPromise<IElement[]>;
dispatchKeybinding(keybinding: string): TPromise<void>;
click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise<void>;
doubleClick(selector: string): TPromise<void>;
move(selector: string): TPromise<void>;
setValue(selector: string, text: string): TPromise<void>;
getTitle(): TPromise<void>;
isActiveElement(selector: string): TPromise<void>;
getElements(selector: string): TPromise<IElement[]>;
selectorExecute<P>(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P>;
}
export interface IWindowDriverChannel extends IChannel {
call(command: 'getElements', arg: string): TPromise<IElement[]>;
call(command: 'dispatchKeybinding', arg: string): TPromise<void>;
call(command: 'click', arg: [string, number | undefined, number | undefined]): TPromise<void>;
call(command: 'doubleClick', arg: string): TPromise<void>;
call(command: 'move', arg: string): TPromise<void>;
call(command: 'setValue', arg: [string, string]): TPromise<void>;
call(command: 'getTitle'): TPromise<void>;
call(command: 'isActiveElement', arg: string): TPromise<void>;
call(command: 'getElements', arg: string): TPromise<IElement[]>;
call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise<any>;
call(command: string, arg: any): TPromise<any>;
}
@@ -118,8 +182,15 @@ export class WindowDriverChannel implements IWindowDriverChannel {
call(command: string, arg?: any): TPromise<any> {
switch (command) {
case 'getElements': return this.driver.getElements(arg);
case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg);
case 'click': return this.driver.click(arg[0], arg[1], arg[2]);
case 'doubleClick': return this.driver.doubleClick(arg);
case 'move': return this.driver.move(arg);
case 'setValue': return this.driver.setValue(arg[0], arg[1]);
case 'getTitle': return this.driver.getTitle();
case 'isActiveElement': return this.driver.isActiveElement(arg);
case 'getElements': return this.driver.getElements(arg);
case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[2], ...arg[2]);
}
return undefined;