private void ValidateTarget(Target.TargetInfo targetInfo)
 {
     Assert.That(targetInfo, Is.Not.Null);
     Assert.That(targetInfo.TargetId, Is.Not.Null);
     Assert.That(targetInfo.Title, Is.Not.Null);
     Assert.That(targetInfo.Type, Is.Not.Null);
     Assert.That(targetInfo.Url, Is.Not.Null);
 }
        public async Task GetTargetAndSendMessageToTarget()
        {
            Target.TargetInfo[] allTargets = null;
            string sessionId = null;

            Target.TargetInfo targetInfo = null;
            driver.Url = EnvironmentManager.Instance.UrlBuilder.WhereIs("devToolsConsoleTest.html");
            ManualResetEventSlim sync = new ManualResetEventSlim(false);

            session.Target.ReceivedMessageFromTarget += (sender, e) =>
            {
                ValidateMessage(e);
                sync.Set();
            };
            var targetsResponse = await session.Target.GetTargets();

            allTargets = targetsResponse.TargetInfos;
            ValidateTargetsInfos(allTargets);
            ValidateTarget(allTargets[0]);
            targetInfo = allTargets[0];
            await session.Target.ActivateTarget(new Target.ActivateTargetCommandSettings()
            {
                TargetId = targetInfo.TargetId
            });

            var attachResponse = await session.Target.AttachToTarget(new Target.AttachToTargetCommandSettings()
            {
                TargetId = targetInfo.TargetId,
                Flatten  = false
            });

            sessionId = attachResponse.SessionId;
            ValidateSession(sessionId);
            await session.Target.SendMessageToTarget(new Target.SendMessageToTargetCommandSettings()
            {
                Message   = "{\"id\":" + id + ",\"method\":\"Page.bringToFront\"}",
                SessionId = sessionId,
                TargetId  = targetInfo.TargetId
            });

            sync.Wait(TimeSpan.FromSeconds(5));
        }