mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
Implement basic element handles (#248)
This patch implements basic element handles which a backed with remote objects. Fixes #111
This commit is contained in:
23
lib/Page.js
23
lib/Page.js
@@ -138,6 +138,14 @@ class Page extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} selector
|
||||
* @return {!Promise<?ElementHandle>}
|
||||
*/
|
||||
async $(selector) {
|
||||
return this.mainFrame().$(selector);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} url
|
||||
* @return {!Promise}
|
||||
@@ -555,7 +563,10 @@ class Page extends EventEmitter {
|
||||
* @return {!Promise}
|
||||
*/
|
||||
async click(selector, options) {
|
||||
await this.mainFrame().click(selector, options);
|
||||
let handle = await this.$(selector);
|
||||
console.assert(handle, 'No node found for selector: ' + selector);
|
||||
await handle.click(options);
|
||||
await handle.release();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -563,7 +574,10 @@ class Page extends EventEmitter {
|
||||
* @param {!Promise}
|
||||
*/
|
||||
async hover(selector) {
|
||||
await this.mainFrame().hover(selector);
|
||||
let handle = await this.$(selector);
|
||||
console.assert(handle, 'No node found for selector: ' + selector);
|
||||
await handle.hover();
|
||||
await handle.release();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -571,7 +585,10 @@ class Page extends EventEmitter {
|
||||
* @return {!Promise}
|
||||
*/
|
||||
async focus(selector) {
|
||||
return this.mainFrame().focus(selector);
|
||||
let handle = await this.$(selector);
|
||||
console.assert(handle, 'No node found for selector: ' + selector);
|
||||
await handle.evaluate(element => element.focus());
|
||||
await handle.release();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user