fix(wk): support ElementHandle.ownerFrame (#338)

This commit is contained in:
Yury Semikhatsky 2019-12-26 14:05:46 -08:00 committed by GitHub
parent b59049f8e8
commit f56ff07f19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View file

@ -10,7 +10,7 @@
"playwright": {
"chromium_revision": "724623",
"firefox_revision": "1008",
"webkit_revision": "1046"
"webkit_revision": "1052"
},
"scripts": {
"unit": "node test/test.js",

View file

@ -383,7 +383,15 @@ export class WKPage implements PageDelegate {
}
async getOwnerFrame(handle: dom.ElementHandle): Promise<frames.Frame | null> {
return handle._context.frame;
const remoteObject = toRemoteObject(handle);
if (!remoteObject.objectId)
return null;
const nodeInfo = await this._session.send('DOM.describeNode', {
objectId: remoteObject.objectId
});
if (!nodeInfo.ownerFrameId)
return null;
return this._page._frameManager.frame(nodeInfo.ownerFrameId);
}
isElementHandle(remoteObject: any): boolean {

View file

@ -134,7 +134,7 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROME, WEBKIT}) {
const elementHandle = await frame.evaluateHandle(() => document.querySelector('#frame1'));
expect(await elementHandle.ownerFrame()).toBe(frame);
});
it.skip(FFOX || WEBKIT)('should work for cross-frame evaluations', async({page,server}) => {
it.skip(FFOX)('should work for cross-frame evaluations', async({page,server}) => {
await page.goto(server.EMPTY_PAGE);
await utils.attachFrame(page, 'frame1', server.EMPTY_PAGE);
const frame = page.mainFrame();