예제 #1
0
        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
            });
        }