示例#1
0
        public override async Task PerformTask(ISkraprWorker worker)
        {
            var keyEvents = InputUtils.ConvertInputToKeyEvents(Input);

            if (keyEvents.Count() == 0)
            {
                throw new InvalidOperationException($"No keyevents were found in input: {Input}");
            }

            var nodeId = await worker.Session.DOM.GetNodeIdForSelector(Selector);

            await worker.Session.DOM.Focus(new Dom.FocusCommand
            {
                NodeId = nodeId
            }, worker.CancellationToken);

            foreach (var keyEvent in keyEvents)
            {
                await worker.Session.Input.DispatchKeyEvent(keyEvent, worker.CancellationToken);

                await Task.Delay(RandomUtils.Random.Next(5, 50));

                keyEvent.Type = "keyUp";
                await worker.Session.Input.DispatchKeyEvent(keyEvent, worker.CancellationToken);

                await Task.Delay(RandomUtils.Random.Next(50, 150));
            }
        }
        public override async Task PerformTask(ISkraprWorker worker)
        {
            var documentNode = await worker.Session.DOM.GetDocument(1);

            var selectorResponse = await worker.Session.DOM.QuerySelectorAll(new ChromeDevTools.DOM.QuerySelectorAllCommand
            {
                NodeId   = documentNode.NodeId,
                Selector = Selector
            });

            foreach (var nodeId in selectorResponse.NodeIds)
            {
                if (!worker.DevTools.ChildNodes.ContainsKey(nodeId))
                {
                    worker.Logger.LogError("{taskName} Expected that a node with an id of {id} would be in the child node dictionary.", Name, nodeId);
                    continue;
                }

                var node       = worker.DevTools.ChildNodes[nodeId];
                var attributes = node.GetAttributes();
                if (attributes.ContainsKey("href"))
                {
                    worker.Post(new NavigateTask
                    {
                        Url = attributes["href"]
                    });
                    worker.Logger.LogDebug("{taskName} Added {href} to the main flow.", Name, attributes["href"]);
                }
            }
        }
示例#3
0
        public override async Task PerformTask(ISkraprWorker worker)
        {
            var navigationHistory = await worker.Session.Page.GetNavigationHistory(new Page.GetNavigationHistoryCommand());

            var targetIndex = navigationHistory.CurrentIndex - StepsBack;

            if (targetIndex < 0)
            {
                throw new InvalidOperationException($"Cannot go back {StepsBack} steps, the navigation history doesn't go that far.");
            }

            var targetNavigationEntry = navigationHistory.Entries[targetIndex];
            await worker.Session.Page.NavigateToHistoryEntry(new Page.NavigateToHistoryEntryCommand
            {
                EntryId = targetNavigationEntry.Id
            });

            await worker.DevTools.WaitForNextNavigation(cancellationToken : worker.CancellationToken);
        }
示例#4
0
 public override async Task PerformTask(ISkraprWorker worker)
 {
     await worker.DevTools.ScrollToAbsoluteBottom(cancellationToken : worker.CancellationToken);
 }
示例#5
0
 public abstract Task PerformTask(ISkraprWorker worker);