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"]); } } }
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); }
public override async Task PerformTask(ISkraprWorker worker) { await worker.DevTools.ScrollToAbsoluteBottom(cancellationToken : worker.CancellationToken); }
public abstract Task PerformTask(ISkraprWorker worker);