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); }
/// <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); }
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); }