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 targetInfoResponse = await worker.Session.Target.GetTargetInfo(new Target.GetTargetInfoCommand { TargetId = worker.DevTools.TargetId, }); worker.Post(new NavigateTask { Url = targetInfoResponse.TargetInfo.Url }); }