private IWebDriver BuildFFDriver()
        {
            FirefoxProfile ffProfile = new FirefoxProfile();

            JavaScriptError.AddExtension(ffProfile);
            return(new FirefoxDriver(ffProfile));
        }
示例#2
0
        /// <summary>
        /// Checks the errors.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <exception cref="System.ApplicationException"></exception>
        private static void CheckErrors(string url)
        {
            FirefoxProfile      profile      = new FirefoxProfile();
            DesiredCapabilities capabilities = DesiredCapabilities.Firefox();

            profile.SetPreference("toolkit.startup.max_resumed_crashes", "-1");

            capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());

            JavaScriptError.AddExtension(profile);
            IWebDriver driver = new FirefoxDriver(profile);

            driver.Manage().Cookies.DeleteAllCookies();
            driver.Navigate().Refresh();
            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));

            driver.Url = url;
            Console.WriteLine("Analysing errors...");
            IList <JavaScriptError> clientSideErrors = JavaScriptError.ReadErrors(driver);

            driver.Quit();

            if (clientSideErrors.Any())
            {
                foreach (JavaScriptError error in clientSideErrors)
                {
                    Console.WriteLine(error);
                }
                throw new ApplicationException($"There are {clientSideErrors.Count()} javascript errors. ");
            }
            Console.WriteLine("No errors found. ");
        }
        public void ShouldNotDetectErrorsInWorkingPage()
        {
            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(urlUnbrokenHtml);

                IList <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                Assert.AreEqual(0, jsErrors.Count);
            }
        }
        public void FirebugConsole_Simple()
        {
            string url = GetResource("withConsoleOutput.html");
            JavaScriptError errorSimpleHtml = new JavaScriptError("TypeError: null has no properties", url, 8, "before JS error");
            IEnumerable<JavaScriptError> expectedErrors = new List<JavaScriptError>() { errorSimpleHtml };

            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(url);
                IList<JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
示例#5
0
        public void StartScreenshotting(object parameters)
        {
            var          parameter    = parameters as object[];
            InstanceInfo instanceInfo = parameter[0] as InstanceInfo;
            DataTable    urls         = parameter[1] as DataTable;

            try
            {
                Log("Starting firefox...");
                FirefoxProfile ffProfile = new FirefoxProfile();
                JavaScriptError.AddExtension(ffProfile);

                using (var browser = new FirefoxDriver(ffProfile))
                {
                    string targetDirectory          = CreateTargetDirectory(instanceInfo);
                    List <JavaScriptError> jsErrors = new List <JavaScriptError>();

                    for (int i = 0; i < urls.Rows.Count; i++)
                    {
                        try
                        {
                            Guid nodeGuid = (Guid)urls.Rows[i]["NodeGUID"];
                            Uri  url      = new Uri(instanceInfo.Uri, "getdoc/" + nodeGuid);

                            Log("Screenshotting [{0}/{1}]: {2}", i, urls.Rows.Count, nodeGuid);

                            browser.Navigate().GoToUrl(url);
                            string fileName = GetFileName(targetDirectory, browser.Url);
                            browser.GetScreenshot()
                            .SaveAsFile(fileName, ImageFormat.Jpeg);

                            jsErrors.AddRange(JavaScriptError.ReadErrors(browser));
                        }
                        catch (Exception e)
                        {
                            Log("Exception: {0}", e.Message);
                        }
                    }

                    SaveJavaScriptErrorsToFile(jsErrors, targetDirectory);
                    Log("Screenshotting finished.");
                    browser.Close();
                }
            }
            catch (WebDriverException ex)
            {
                // If the exception occurs, it's most probably because Firefox is not installed.
                Console.WriteLine(ex.Message);
            }
        }
        public void ShouldDetectErrorsOnPage()
        {
            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(urlSimpleHtml);

                IEnumerable <JavaScriptError> expectedErrors = new List <JavaScriptError>()
                {
                    errorSimpleHtml
                };
                IEnumerable <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
        public void ShouldDetectErrorsInExternalJS()
        {
            IEnumerable <JavaScriptError> expectedErrors = new List <JavaScriptError>()
            {
                errorExternalJs
            };

            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(urlWithExternalJs);

                IEnumerable <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
示例#8
0
        public void Initialize()
        {
            urlSimpleHtml = GetResource("simple.html");
            errorSimpleHtml = new JavaScriptError("TypeError: null has no properties", urlSimpleHtml, 9);

            urlWithNestedFrameHtml = GetResource("withNestedFrame.html");
            errorWithNestedFrameHtml = new JavaScriptError("TypeError: \"foo\".notHere is not a function", urlWithNestedFrameHtml, 7);

            urlWithPopupHtml = GetResource("withPopup.html");
            urlPopupHtml = GetResource("popup.html");
            errorPopupHtml = new JavaScriptError("ReferenceError: error is not defined", urlPopupHtml, 5);

            urlWithExternalJs = GetResource("withExternalJs.html");
            urlExternalJs = GetResource("external.js");
            errorExternalJs = new JavaScriptError("TypeError: document.notExisting is undefined", urlExternalJs, 1);
        }
        public void FirebugConsole_Simple()
        {
            string          url             = GetResource("withConsoleOutput.html");
            JavaScriptError errorSimpleHtml = new JavaScriptError("TypeError: null has no properties", url, 8, "before JS error");
            IEnumerable <JavaScriptError> expectedErrors = new List <JavaScriptError>()
            {
                errorSimpleHtml
            };

            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(url);
                IList <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
示例#10
0
        public void ShouldDetectErrorsInPopup()
        {
            IEnumerable <JavaScriptError> expectedErrors = new List <JavaScriptError>()
            {
                errorPopupHtml
            };

            using (IWebDriver driver = BuildFFDriver())
            {
                driver.Navigate().GoToUrl(urlWithPopupHtml);
                driver.FindElement(By.TagName("button")).Click();

                IEnumerable <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
        private IWebDriver BuildFFDriver()
        {
            FirefoxProfile ffProfile = new FirefoxProfile();

            JavaScriptError.AddExtension(ffProfile);

            ffProfile.AddExtension(SaveBinaryResource("firebug-2.0.8-fx.xpi", TestResources.firebug_2_0_8_fx));

            ffProfile.SetPreference("extensions.firebug.showStackTrace", "true");
            ffProfile.SetPreference("extensions.firebug.delayLoad", "false");
            ffProfile.SetPreference("extensions.firebug.showFirstRunPage", "false");
            ffProfile.SetPreference("extensions.firebug.allPagesActivation", "on");
            ffProfile.SetPreference("extensions.firebug.console.enableSites", "true");
            ffProfile.SetPreference("extensions.firebug.defaultPanelName", "console");

            return(new FirefoxDriver(ffProfile));
        }
示例#12
0
        public void Initialize()
        {
            urlUnbrokenHtml = GetResource("unbroken.html");

            urlSimpleHtml   = GetResource("simple.html");
            errorSimpleHtml = new JavaScriptError("TypeError: null has no properties", urlSimpleHtml, 9, null);

            urlWithNestedFrameHtml   = GetResource("withNestedFrame.html");
            errorWithNestedFrameHtml = new JavaScriptError("TypeError: \"foo\".notHere is not a function", urlWithNestedFrameHtml, 7, null);

            urlWithPopupHtml = GetResource("withPopup.html");
            urlPopupHtml     = GetResource("popup.html");
            errorPopupHtml   = new JavaScriptError("ReferenceError: error is not defined", urlPopupHtml, 5, null);

            urlWithExternalJs = GetResource("withExternalJs.html");
            urlExternalJs     = GetResource("external.js");
            errorExternalJs   = new JavaScriptError("TypeError: document.notExisting is undefined", urlExternalJs, 1, null);
        }
示例#13
0
        public void ShouldAllowExplicitlySpecifyingXpiPath()
        {
            FirefoxProfile ffProfile = new FirefoxProfile();

            JavaScriptError.AddExtension(ffProfile, xpiDirectory());

            using (IWebDriver driver = new FirefoxDriver(ffProfile))
            {
                driver.Navigate().GoToUrl(urlSimpleHtml);

                IEnumerable <JavaScriptError> expectedErrors = new List <JavaScriptError>()
                {
                    errorSimpleHtml
                };
                IEnumerable <JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
                AssertErrorsEqual(expectedErrors, jsErrors);
            }
        }
示例#14
0
 public void GetConsoleErrors()
 {
     //List<LogEntry> logs = driver.Manage().Logs.GetLog(LogType.Browser).ToList();
     //foreach (LogEntry log in logs)
     //{
     //    while (logs.Count > 0)
     //    {
     //        String logInfo = log.ToString();
     //        ConsoleErr = ConsoleErr + log.Message.ToString();
     //    }
     //    ConsoleErr = ConsoleErr + log.ToString();
     //}
     Console.WriteLine("GetConsoleErrors ;"+ Convert.ToString(driver));
     List<JavaScriptError> logs = JavaScriptError.ReadErrors(driver).ToList();
     foreach (var log in logs)
     {
         ConsoleErr = ConsoleErr + log.ToString();
     }
     Console.WriteLine("GetConsoleErrors : Finished");
 }
示例#15
0
 public JavaScriptException(JavaScriptError error)
     : this(error.ToString(), null, JavaScriptError.NoError)
 {
 }
 /// <summary>
 /// Returns a collection of JavaScript errors (a plugin on the browser is needed)
 /// View https://github.com/protectedtrust/JSErrorCollector.NET for more information
 /// </summary>
 /// <param name="driver">The WebDriver instrance</param>
 /// <returns></returns>
 public static IEnumerable <JavaScriptError> GetJavaScriptErrors(this IWebDriver driver)
 {
     return(JavaScriptError.ReadErrors(driver));
 }
        private static void PrintErrorMessage(JavaScriptError javaScriptError)
        {
            string message = $"Error/Warning: {javaScriptError.SourceName}, Line: {javaScriptError.LineNumber}, Message: {javaScriptError.ErrorMessage} \n";

            Console.WriteLine(message);
        }
示例#18
0
 public JavaScriptException(string message, System.Exception innerException, JavaScriptError errorNumber)
     : base(message, innerException)
 {
 }