private IWebDriver BuildFFDriver() { FirefoxProfile ffProfile = new FirefoxProfile(); JavaScriptError.AddExtension(ffProfile); return(new FirefoxDriver(ffProfile)); }
/// <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); } }
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); } }
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); } }
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)); }
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); }
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); } }
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"); }
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); }
public JavaScriptException(string message, System.Exception innerException, JavaScriptError errorNumber) : base(message, innerException) { }