public static async Task <IFrame> AttachFrameAsync(IPage page, string frameId, string url) { var handle = (IElementHandle)await page.EvaluateHandleAsync(@" async ({frameId, url}) => { const frame = document.createElement('iframe'); frame.src = url; frame.id = frameId; document.body.appendChild(frame); await new Promise(x => frame.onload = x); return frame }", new { frameId, url }); return(await handle.GetContentFrameAsync()); }
private Task <IJSHandle> CaptureLastKeydownAsync(IPage page) => page.EvaluateHandleAsync(@"() => { const lastEvent = { repeat: false, location: -1, code: '', key: '', metaKey: false, keyIdentifier: 'unsupported' }; document.addEventListener('keydown', e => { lastEvent.repeat = e.repeat; lastEvent.location = e.location; lastEvent.key = e.key; lastEvent.code = e.code; lastEvent.metaKey = e.metaKey; lastEvent.keyIdentifier = 'keyIdentifier' in e && e.keyIdentifier; }, true); return lastEvent; }");