public async Task <string> GetOwnerFrameAsync(ElementHandle handle) { // document.documentElement has frameId of the owner frame. var documentElement = await handle.EvaluateHandleAsync(@"node => { const doc = node; if (doc.documentElement && doc.documentElement.ownerDocument === doc) return doc.documentElement; return node.ownerDocument ? node.ownerDocument.documentElement : null; }").ConfigureAwait(false) as ElementHandle; if (documentElement == null) { return(null); } var remoteObject = documentElement.RemoteObject; if (string.IsNullOrEmpty(remoteObject.ObjectId)) { return(null); } var nodeInfo = await Client.SendAsync(new DOMDescribeNodeRequest { ObjectId = remoteObject.ObjectId, }).ConfigureAwait(false); string frameId = nodeInfo?.Node?.FrameId; await documentElement.DisposeAsync().ConfigureAwait(false); return(frameId); }
public Task SetInputFilesAsync(ElementHandle handle, IEnumerable <FilePayload> files) => handle.EvaluateHandleAsync(Dom.SetFileInputFunction, files);