示例#1
0
        public static string formatJsCode(this WatiN_IE ie, string codeToFormat)
        {
            if (ie.url().not_Equal("about:blank"))
            {
                "opening ABOUT:Blank".info();
                ie.open("about:blank");
            }
            else
            {
                "already in ABOUT:Blank".info();
            }

            if (ie.js_FunctionExists("js_beautify").isFalse())
            {
                var jsBeautify = @"beautify.js".local();
                ie.eval(jsBeautify.fileContents());
                if (ie.js_FunctionExists("js_beautify"))
                {
                    "Injected beautify.js into about:blank".info();
                }
                else
                {
                    "Failed to Inject js_beautify code".error();
                }
            }
            "formating Javascript with size: {0}".info(codeToFormat.size());
            ie.setJsObject(codeToFormat);
            ie.eval("window.external.setJsObject(js_beautify(_jsObject))");
            var result = ie.getJsObject().str().fix_CRLF();

//			"formated Javascript has size: {0}".info(result.size());
            return(result);
        }
示例#2
0
        public static WatiN_IE.ToCSharp injectJavascriptFunctions(this WatiN_IE ie, bool resetHooks)
        {
            if (ie.WebBrowser.isNull())
            {
                "in InjectJavascriptFunctions, ie.WebBrowser was null".error();
            }
            else
            {
                if (ie.WebBrowser.ObjectForScripting.isNull() || resetHooks)
                {
                    ie.WebBrowser.ObjectForScripting = new WatiN_IE.ToCSharp();

                    "Injecting Javascript Hooks * Functions for page: {0}".debug(ie.url());
                    ie.eval("var o2Log = function(message) { window.external.write(message) };");
                    ie.invokeScript("o2Log", "Test from Javascript (via toCSharp(message) )");
                    ie.eval("$o2 = window.external");
                    "Injection complete (use o2Log(...) or $o2.write(...)  to talk back to O2".info();
                    return(ie.WebBrowser.ObjectForScripting as WatiN_IE.ToCSharp);
                }
                else
                {
                    if ((ie.WebBrowser.ObjectForScripting is WatiN_IE.ToCSharp))
                    {
                        return(ie.WebBrowser.ObjectForScripting as WatiN_IE.ToCSharp);
                    }
                    else
                    {
                        "in WatiN_IE injectJavascriptFunctions, unexpected type in ie.WebBrowser.ObjectForScripting: {0}".error(ie.WebBrowser.ObjectForScripting.typeName());
                    }
                }
            }
            return(null);
        }
示例#3
0
        public static WatiN_IE deleteJsVariable(this WatiN_IE watinIe, string jsVariable)
        {
            var evalString = "try { delete " + jsVariable + " } catch(exception) { }";

            watinIe.eval(evalString);
            return(watinIe);
        }
        public static WatiN_IE inject_FirebugLite(this WatiN_IE ie)
        {
            var firebugLiteScript = "(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');";

            ie.eval(firebugLiteScript);
            "[Injected FirebugLite]".info();
            return(ie);
        }
示例#5
0
        public static object downloadAndExecJavascriptFile(this WatiN_IE ie, string url)
        {
            "[WatiN_IE] downloadAndExecJavascriptFile: {0}".info(url);
            var javascriptCode = url.uri().getHtml();

            if (javascriptCode.valid())
            {
                ie.eval(javascriptCode);
            }
            return(ie);
        }
示例#6
0
        public static WatiN_IE inject_jQuery(this WatiN_IE ie)
        {
            var jQueryFile = "jquery-1.6.2.min.js";
            var jQueryHtml = jQueryFile.local().fileContents();

            if (jQueryHtml.valid())
            {
                ie.eval(jQueryHtml);
                "[Injected jQuery]".info();// (jQuery script {0} size: {1}".info(jQueryFile, jQueryHtml.size());
            }
            else
            {
                "[Injecting jQuery] could find local jQuery file: {0}".error(jQueryFile);
            }
            return(ie);
        }
示例#7
0
 public static WatiN_IE alert(this WatiN_IE ie, string alertScript)
 {
     return(ie.eval("alert({0});".format(alertScript)));
 }
示例#8
0
 public static WatiN_IE eval(this WatiN_IE ie, string script)
 {
     return(ie.eval(script, true));
 }
示例#9
0
 public static WatiN_IE eval_ASync(this WatiN_IE ie, string script)
 {
     O2Thread.mtaThread(() => ie.eval(script));
     return(ie);
 }
示例#10
0
 public static WatiN_IE jQuery_Append_Body(this WatiN_IE ie, string htmlToAppend)
 {
     ie.eval("$('body').append('<div>{0}<div>')".format(htmlToAppend));
     return(ie);
 }