Пример #1
0
 internal static async Task VerifyViewportAsync(IPage page, int width, int height)
 {
     Assert.Equal(width, (int)page.ViewportSize.Width);
     Assert.Equal(height, (int)page.ViewportSize.Height);
     Assert.Equal(width, await page.EvaluateAsync <int>("window.innerWidth"));
     Assert.Equal(height, await page.EvaluateAsync <int>("window.innerHeight"));
 }
Пример #2
0
        public async Task ShouldHandleOopifDetach()
        {
            await _page.GoToAsync(TestConstants.ServerUrl + "/dynamic-oopif.html");

            Assert.Equal(1, await CountOOPIFsASync(_browser));
            Assert.Equal(2, _page.Frames.Count());
            var frame = _page.Frames[1];

            Assert.Equal(TestConstants.CrossProcessHttpPrefix + "/grid.html", await frame.EvaluateAsync <string>("() => '' + location.href"));

            var(frameDetached, _) = await TaskUtils.WhenAll(
                _page.WaitForEventAsync(PageEvent.FrameDetached),
                _page.EvaluateAsync <string>("() => document.querySelector('iframe').remove()"));

            Assert.Equal(frame, frameDetached.Frame);
        }
Пример #3
0
 private async Task GiveItAChanceToResolve(IPage page)
 {
     for (int i = 0; i < 5; i++)
     {
         await page.EvaluateAsync("() => new Promise(f => requestAnimationFrame(() => requestAnimationFrame(f)))");
     }
 }
Пример #4
0
 public static async Task DetachFrameAsync(IPage page, string frameId)
 {
     await page.EvaluateAsync(@"function detachFrame(frameId) {
       const frame = document.getElementById(frameId);
       frame.remove();
     }", frameId);
 }
Пример #5
0
 internal static async Task NavigateFrameAsync(IPage page, string frameId, string url)
 {
     await page.EvaluateAsync(@"function navigateFrame(frameId, url) {
       const frame = document.getElementById(frameId);
       frame.src = url;
       return new Promise(x => frame.onload = x);
     }", frameId, url);
 }
Пример #6
0
        public async Task InitializeAsync()
        {
            Page = await PlaywrightSharpWebLoaderFixture.HostBrowser.DefaultContext.NewPageAsync();

            await Page.GoToAsync(TestConstants.ServerUrl + "/test/assets/playwrightweb.html");

            await Page.EvaluateAsync(
                "(product, connectOptions) => setup(product, connectOptions)",
                TestConstants.Product.ToLower(), PlaywrightSharpWebLoaderFixture.ControlledBrowserApp.ConnectOptions);
        }
Пример #7
0
        private async Task TestWaitingAsync(IPage page, string after)
        {
            var div = await page.QuerySelectorAsync("div");

            var task = div.ScrollIntoViewIfNeededAsync();
            await page.EvaluateAsync("() => new Promise(f => setTimeout(f, 1000))");

            Assert.False(task.IsCompleted);
            await div.EvaluateAsync(after);

            await task;
        }
        public async Task <string> CreateNewProcess(IPage page, bool first)
        {
            AddCurrentStateAsUndoable();

            if (first)
            {
                await page.EvaluateAsync(@"window.modeling.makeProcess();");
            }

            dynamic result = await page.EvaluateAsync <ExpandoObject>(
                @$ "const participant = window.elementFactory.createParticipantShape({{ type: 'bpmn:Participant' }});
                   const addedParticipant = window.modeling.createShape(participant, {{ x: 400, y: 100 }}, process);
                   Object.freeze({{procId: addedParticipant.businessObject.processRef.id, participantId: addedParticipant.id}})");
        public async Task SetupVariables(IPage page)
        {
            InitializeModel();
            await page.EvaluateAsync(@"() =>{ const modeler = window.modeler;// (1) Get the modules
                            window.elementFactory = modeler.get('elementFactory');
                            window.elementRegistry = modeler.get('elementRegistry');
                            window.modeling = modeler.get('modeling');
                            window.bpmnFactory = modeler.get('bpmnFactory');
                            window.commandStack = window.modeling._commandStack;

                            window.process = elementRegistry.get('Process_1');
                            window.startEvent = elementRegistry.get('StartEvent_1');
                    }");
        }
Пример #10
0
        public async Task ShouldDisableTimeoutWhenItsSetTo0()
        {
            var watchdog = page.WaitForFunctionAsync(
                @"() => {
                    window.__counter = (window.__counter || 0) + 1;
                    return window.__injected;
                }",
                polling: 10,
                timeout: 0);
            await page.WaitForFunctionAsync("() => window.__counter > 10");

            await page.EvaluateAsync("window.__injected = true");

            await watchdog;
        }
Пример #11
0
        public static async Task InjectExisintgToDoCard(IPage page)
        {
            var     key   = "todos-mithril";
            dynamic value = new ExpandoObject();

            value.title     = CardTitle;
            value.completed = CardCompletedStatus;
            value.editing   = CardEditingStatus;
            value.key       = CardKey;
            var stringified = Newtonsoft.Json.JsonConvert.SerializeObject(new[] { value });
            await page.EvaluateAsync($"window.localStorage.setItem('{key}','{stringified}')");

            await page.ReloadAsync();

            await page.ClickAsync("a[href*='completed']");
        }
Пример #12
0
        public async Task EvaluatePageAsync(IPage page, BotData botData)
        {
            var result = await page.EvaluateAsync <string>(Expression);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            if (IsCapture)
            {
                //botData.Captures[Output] = result;
            }

            //botData.Variables[Output] = result;
        }
Пример #13
0
 private static Task <string> GetPermissionAsync(IPage page, string name)
 => page.EvaluateAsync <string>(
     "name => navigator.permissions.query({ name }).then(result => result.state)",
     name);