示例#1
0
        public void Test4()
        {
            Jint.Engine engine       = new Jint.Engine();
            IDocument   htmlDocument = new Document();

            htmlDocument.HtmlDocument = new AngleSharp.Html.Parser.HtmlParser().ParseDocument(htmlContent);

            Window.Window window1 = new Window.Window(engine);
            window1.document = htmlDocument.HtmlDocument;

            window1.InitializeEngine();
            var jquery = System.IO.File.ReadAllText(@"../../../../BrowseSharpPlayground/jquery.js");

            //engine.Execute("window.document.readyState = \"Loading\";");
            engine.Execute(jquery);

            engine.Execute("var $ = window.jQuery;");
            var script = "$(document).ready(function() {$('#content').text('hello there it worked');})";
            //var cleanedScript = new Regex();
            Regex regex = new Regex(@"(\$\([^document]*document[^)]*\)[^.]*.ready[^(]*\([^function]*function[^(]*\([^)]*\)[^{]*{)([^a|a]*)(}\))");

            engine.Execute(regex.Match(script).Groups[2].Value);
            //engine.Execute("window.document.readyState = 'complete'");
            //engine.Execute("$(document).trigger('ready',window.document)");
            //engine.Execute("$(document).trigger('ready')");
            Assert.AreEqual("hello there it worked", window1.document.GetElementById("content").TextContent);
        }
示例#2
0
        public async Task jQueryClickTest()
        {
            string script = "var numClicks = 0;\n" +
                            "$('#btn').click(function() {\n" +
                            "$('#message').text(\"hello there you clicked the button \" + numClicks + \" times\");\n" +
                            "});";
            string html = @"<!DOCTYPE html>\n<html>
	<head>
		
	</head>
	<body>
		<div id='message'>empty</div>
        <input type='button' id='btn'>Click me please</input>
	</body>
</html>";

            Jint.Engine engine   = new Jint.Engine();
            IDocument   document = new Document();
            var         parser   = new AngleSharp.Html.Parser.HtmlParser(new AngleSharp.Html.Parser.HtmlParserOptions()
            {
                IsScripting = true
            });

            bool waitForScripts = true;

            //parser.AddEventListener(AngleSharp.Dom.EventNames.Parsing, (target,ev) => { document.HtmlDocument = (IHtmlDocument)target; while (waitForScripts) { Thread.Sleep(250); } });
            //CancellationToken parserCanellationToken = new CancellationToken();

            /*Task<IHtmlDocument> parseTask = Task.Run(() => { return parser.ParseDocumentAsync(html, parserCanellationToken); });
             *
             *  Thread.Sleep(500);
             *  while(document.HtmlDocument == null)
             * {
             *
             * }*/
            Window.Window window1 = new Window.Window(engine);
            window1.document = parser.ParseDocument(html);

            window1.InitializeEngine();
            var jquery = System.IO.File.ReadAllText(@"../../../../BrowseSharpPlayground/jquery.js");

            //engine.Execute("window.document.readyState = \"Loading\";");
            engine.Execute(jquery);
            engine.Execute("var $ = window.jQuery;");

            engine.Execute(script);
            waitForScripts = false;;
            CheckMessage(engine, document, "empty");

            engine.Execute("$('#btn').trigger('click');");
            CheckMessage(engine, document, "hello there you clicked the button 1 times");
        }
示例#3
0
        public void Test3()
        {
            Jint.Engine engine       = new Jint.Engine();
            IDocument   htmlDocument = new Document();

            htmlDocument.HtmlDocument = new AngleSharp.Html.Parser.HtmlParser().ParseDocument(htmlContent);

            Window.Window window1 = new Window.Window(engine);
            window1.document = htmlDocument.HtmlDocument;

            window1.InitializeEngine();
            var jquery = System.IO.File.ReadAllText(@"../../../../BrowseSharpPlayground/jquery.js");

            engine.Execute(jquery);
            engine.Execute("var $ = window.jQuery;");
            engine.Execute("$('#content').text('hello there it worked');");
            //engine.Execute("$(document).trigger('ready')");
            Assert.AreEqual("hello there it worked", window1.document.GetElementById("content").TextContent);
        }
示例#4
0
        public async Task vanillaJsClickTest()
        {
            string script = "var numClicks = 0; function onClickBtn(){numClicks += 1; document.getElementById('message').textContent = \"hello there you clicked the button \" + numClicks + \" times\";}; ";
            string html   = @"
<!DOCTYPE html>
<html>
	<head>
		
	</head>
	<body>
		<div id='message'>empty</div>
        <button id='btn' onclick='onClickBtn();'>Click me please</button>
	</body>
</html>";

            //var context = BrowsingContext.New(new Configuration.Default.WithJavaScript());

            Jint.Engine engine       = new Jint.Engine();
            IDocument   htmlDocument = new Document();

            Window.Window window1 = new Window.Window(engine);
            window1.document = htmlDocument.HtmlDocument;

            window1.InitializeEngine();
            var jquery = System.IO.File.ReadAllText(@"../../../../BrowseSharpPlayground/jquery.js");

            //engine.Execute("window.document.readyState = \"Loading\";");
            engine.Execute(jquery);

            engine.Execute("var $ = window.jQuery;");
            engine.Execute(script);

            CheckMessage(engine, htmlDocument, "empty");

            ((AngleSharp.Html.Dom.IHtmlElement)window1.document.GetElementById("btn")).DoClick();
            CheckMessage(engine, htmlDocument, "hello there you clicked the button 1 times");
        }