feat(Frame): add click(), focus(), hover(), tap() and type() (#1970)

This patch adds frame shortcuts to drive input:
- `Frame.click()`
- `Frame.focus()`
- `Frame.hover()`
- `Frame.tap()`
- `Frame.type()`
This commit is contained in:
Alix Axel
2018-02-05 23:58:03 +01:00
committed by Andrey Lushnikov
parent 48218fae8a
commit 660b65780f
3 changed files with 141 additions and 31 deletions

View File

@@ -547,6 +547,37 @@ class Frame {
}
}
/**
* @param {string} selector
* @param {!Object=} options
*/
async click(selector, options = {}) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.click(options);
await handle.dispose();
}
/**
* @param {string} selector
*/
async focus(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.focus();
await handle.dispose();
}
/**
* @param {string} selector
*/
async hover(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.hover();
await handle.dispose();
}
/**
* @param {string} selector
* @param {!Array<string>} values
@@ -572,6 +603,28 @@ class Frame {
}, values);
}
/**
* @param {string} selector
*/
async tap(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.tap();
await handle.dispose();
}
/**
* @param {string} selector
* @param {string} text
* @param {{delay: (number|undefined)}=} options
*/
async type(selector, text, options) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.type(text, options);
await handle.dispose();
}
/**
* @param {(string|number|Function)} selectorOrFunctionOrTimeout
* @param {!Object=} options

View File

@@ -144,16 +144,6 @@ class Page extends EventEmitter {
return this._coverage;
}
/**
* @param {string} selector
*/
async tap(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.tap();
await handle.dispose();
}
/**
* @return {!Tracing}
*/
@@ -814,31 +804,22 @@ class Page extends EventEmitter {
* @param {string} selector
* @param {!Object=} options
*/
async click(selector, options = {}) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.click(options);
await handle.dispose();
click(selector, options = {}) {
return this.mainFrame().click(selector, options);
}
/**
* @param {string} selector
*/
async hover(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.hover();
await handle.dispose();
focus(selector) {
return this.mainFrame().focus(selector);
}
/**
* @param {string} selector
*/
async focus(selector) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.focus();
await handle.dispose();
hover(selector) {
return this.mainFrame().hover(selector);
}
/**
@@ -846,20 +827,24 @@ class Page extends EventEmitter {
* @param {!Array<string>} values
* @return {!Promise<!Array<string>>}
*/
async select(selector, ...values) {
select(selector, ...values) {
return this.mainFrame().select(selector, ...values);
}
/**
* @param {string} selector
*/
tap(selector) {
return this.mainFrame().tap(selector);
}
/**
* @param {string} selector
* @param {string} text
* @param {{delay: (number|undefined)}=} options
*/
async type(selector, text, options) {
const handle = await this.$(selector);
console.assert(handle, 'No node found for selector: ' + selector);
await handle.type(text, options);
await handle.dispose();
type(selector, text, options) {
return this.mainFrame().type(selector, text, options);
}
/**