private List <GeckoElement> GetPElementsWithJQuery()
        {
            var executor = new JQueryExecutor(_browser.Window);

            var elements = executor.GetElementsByJQuery(@"$('p')").ToList();

            return(elements);
        }
        public void JQueryExecutor_ExecuteJQuery_ScriptExecutesAndReturnsJsValOfExpectedType()
        {
            _browser.TestLoadHtml(JQueryExecutorTestsHtml);

            var   executor = new JQueryExecutor(_browser.Window);
            JsVal value    = executor.ExecuteJQuery("$('#a')");

            Assert.IsTrue(value.IsObject);
        }
예제 #3
0
파일: LeanWinForm.cs 프로젝트: rbohac/Lean
        /// <summary>
        /// Backtest result packet
        /// </summary>
        /// <param name="packet"></param>
        private void MessagingOnBacktestResultEvent(BacktestResultPacket packet)
        {
            if (packet.Progress != 1)
            {
                return;
            }

            //Remove previous event handler:
            var url = GetUrl(_job, _liveMode, true);

            //Generate JSON:
            var     jObj       = new JObject();
            var     dateFormat = "yyyy-MM-dd HH:mm:ss";
            dynamic final      = jObj;

            final.dtPeriodStart    = packet.PeriodStart.ToString(dateFormat);
            final.dtPeriodFinished = packet.PeriodFinish.AddDays(1).ToString(dateFormat);
            dynamic resultData = new JObject();

            resultData.version         = "3";
            resultData.results         = JObject.FromObject(packet.Results);
            resultData.statistics      = JObject.FromObject(packet.Results.Statistics);
            resultData.iTradeableDates = 1;
            resultData.ranking         = null;
            final.oResultData          = resultData;
            var json = JsonConvert.SerializeObject(final);

            //GECKO RESULT SET:
#if !__MonoCS__
            _geckoBrowser.DOMContentLoaded += (sender, args) =>
            {
                var executor = new JQueryExecutor(_geckoBrowser.Window);
                executor.ExecuteJQuery("window.jnBacktest = JSON.parse('" + json + "');");
                executor.ExecuteJQuery("$.holdReady(false)");
            };
            _geckoBrowser.Navigate(url);
#else
            //MONO WEB BROWSER RESULT SET:
            _monoBrowser.DocumentCompleted += (sender, args) =>
            {
                if (_monoBrowser.Document == null)
                {
                    return;
                }
                _monoBrowser.Document.InvokeScript("eval", new object[] { "window.jnBacktest = JSON.parse('" + json + "');" });
                _monoBrowser.Document.InvokeScript("eval", new object[] { "$.holdReady(false)" });
            };
            _monoBrowser.Navigate(url);
#endif

            foreach (var pair in packet.Results.Statistics)
            {
                _logging.Trace("STATISTICS:: " + pair.Key + " " + pair.Value);
            }
        }
        public void JQueryExecutor_GetElementByJQuery_ScriptExecutesAndReturnsExpectedResult()
        {
            _browser.TestLoadHtml(JQueryExecutorTestsHtml);

            var          executor = new JQueryExecutor(_browser.Window);
            GeckoElement div      = null;

            Assert.DoesNotThrow(() => div = executor.GetElementByJQuery("$('#a')"));
            Assert.IsNotNull(div);
            Assert.AreEqual("DIV", div.TagName);
            Assert.AreEqual("a", div.GetAttribute("id"));
        }
        public void JQueryExecutor_GetElementsByJQuery_ScriptExecutesAndReturnsExpectedResult()
        {
            _browser.TestLoadHtml(JQueryExecutorTestsHtml);

            var executor = new JQueryExecutor(_browser.Window);

            List <GeckoElement> elements = null;

            Assert.DoesNotThrow(() => elements = executor.GetElementsByJQuery("$('.divs')").ToList());
            Assert.IsNotNull(elements);
            Assert.AreEqual(2, elements.Count());

            foreach (var div in elements)
            {
                Assert.IsNotNull(div);
                Assert.AreEqual("DIV", div.TagName);
                Assert.AreEqual("divs", div.GetAttribute("class"));
            }
        }
        public void JQueryExecutor_ExecuteJQueryWithLargeHTML_ReturnsNothing_DoesNotProduceMemoryLeak()
        {
            const int lineCount = 100;
            var       tempFile  = CreateTempFile(lineCount);

            NavigateToTempFile(tempFile);
            for (var testCounter = 0; testCounter < 1000000; testCounter++)
            {
                NavigateToTempFile(tempFile);
                var executor = new JQueryExecutor(_browser.Window);

                executor.ExecuteJQuery(@"$('p').first().hide()");

                GC.Collect();
                _memoryService.HeapMinimize(true);
            }

            CleanUp(tempFile);
        }
        public void AddMessageEventListener_NavigatingToSeveralPages_ListenerIsReattachedAndCalledWithMessage()
        {
            string payload = null;

            var document = @"<!DOCTYPE html><html><head>No Content</head><body></body></html>";

            browser.AddMessageEventListener("callMe", p => payload = p);
            browser.LoadHtml(document);
            browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();

            browser.LoadHtml(document);
            browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();

            var javaScript = @"var event = new MessageEvent('callMe',  { 'view' : window, 'bubbles' : true, 'cancelable' : false, 'data' : 'some data'}); document.dispatchEvent(event);";
            var executor   = new JQueryExecutor(browser.Window);

            executor.ExecuteJQuery(javaScript);

            Assert.AreEqual("some data", payload);
        }
        public void JQueryExecutor_ExecuteJQueryWithLargeHTML_ReturnsString_DoesNotProduceMemoryLeak()
        {
            const int lineCount = 100;
            var       tempFile  = CreateTempFile(lineCount);

            NavigateToTempFile(tempFile);
            for (var testCounter = 0; testCounter < 1000000; testCounter++)
            {
                var executor = new JQueryExecutor(_browser.Window);

                var value = executor.ExecuteJQuery(@"$('p').first().text()").ToString();

                Assert.That(value, Is.EqualTo("Content"));

                GC.Collect();
                _memoryService.HeapMinimize(true);
            }

            CleanUp(tempFile);
        }
예제 #9
0
        public void AddMessageEventListener_JScriptFiresEventAfterNavigatedToAnotherPage_ListenerIsCalledWithMessage()
        {
            string payload = null;

            _browser.LoadHtml(
                @"<!DOCTYPE html>
			                 <html><head>No Content
			                
							</head><body></body></html>"                            );



            _browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();
            _browser.AddMessageEventListener("callMe", p => payload = p);
            _browser.Navigate("about:blank");
            _browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();

            var javaScript = @"var event = new MessageEvent('callMe',  { 'view' : window, 'bubbles' : true, 'cancelable' : false, 'data' : 'some data'}); document.dispatchEvent(event);";
            var executor   = new JQueryExecutor(_browser.Window);

            executor.ExecuteJQuery(javaScript);

            Assert.AreEqual("some data", payload);
        }