private async Task <bool> WaitForCheckScript(string script, int delay) { int timeOutCnt = 20; while (true) { timeOutCnt--; if (timeOutCnt == 0) { return(false); } JavascriptResponse x = await EvaluateScriptAsync(script); Console.WriteLine((Boolean)getResult(x)); if ((Boolean)getResult(x)) { break; } else { await Task.Delay(delay); } } return(true); }
private async Task LoginYoutubeAsync(string username, string password, string mophnNo) { browser.Focus(); await EvaluateScriptAsync("document.querySelector('#text').click()"); await WaitForPageLoadingAsync(); await EvaluateScriptAsync("document.querySelector('#identifierId').focus()"); await EvaluateScriptAsync(String.Format("document.querySelector('#identifierId').value = '{0}'", username.Trim())); await EvaluateScriptAsync("document.querySelector('#identifierNext').click()"); await EvaluateScriptAsync("document.querySelector('input[type=password]').focus()"); await EvaluateScriptAsync(String.Format("document.querySelector('input[type=password]').value = '{0}'", password.Trim())); await EvaluateScriptAsync("document.querySelector('#passwordNext').click()"); // 로그인 대기 시간 await Task.Delay(3000); // 복구 전화번호 JavascriptResponse x = await EvaluateScriptAsync("document.querySelector('[data-challengetype = \"13\"]') !== null"); if ((Boolean)getResult(x)) { // 복구전화 클릭 await EvaluateScriptAsync("document.querySelector('[data-challengetype = \"13\"]').click()"); // 전화번호 입력 await EvaluateScriptAsync("document.querySelector('.whsOnd.zHQkBf').click()"); await EvaluateScriptAsync(String.Format("document.querySelector('.whsOnd.zHQkBf').value = '{0}'", mophnNo)); // 다음 await EvaluateScriptAsync("document.querySelector('.ZFr60d.CeoRYc').click()"); } ; await WaitForPageLoadingAsync(); }
private async Task addLoveAsync(string loveComment) { browser.Focus(); // 제이쿼리 로드 await LoadJqueryAsync(); bool isFind = false; while (!isFind) { //await ScrollAtCurrentPos(600, 500); await LoadMoreComment(99999); JavascriptResponse x = await EvaluateScriptAsync(String.Format("$(\"[slot='content']:contains('{0}')\").length != 0", loveComment)); if ((Boolean)getResult(x)) { // 엘리먼트로 이동 await EvaluateScriptAsync(String.Format("document.scrollingElement.scrollTop = $(\"[slot='content']:contains('{0}')\").offset().top - 450", loveComment)); // 클릭 await EvaluateScriptAsync(String.Format("$(\"[slot='content']:contains('{0}')\").closest('#main').find('#like-button').click()", loveComment)); isFind = true; } } }
public async void ExecuteJavascript(string script) { JavascriptResponse response = await browser.EvaluateScriptAsync(script); Debug.WriteLine(response.Result); //browser.GetMainFrame().ExecuteJavaScriptAsync(script); }
private async Task InitializeRevitBridgeIfNotPresentAsync() { JavascriptResponse revitBridgeIsPresentCheckResponse = await Browser.GetMainFrame() .EvaluateScriptAsync("window." + JavaScriptBridge.REVIT_BRIDGE_JAVASCRIPT_NAME); if (revitBridgeIsPresentCheckResponse?.Result != null) { // No need to register the bridge since it's already bound return; } // Register the bridge between JS and C# // This also registers the callback that should be bound to by OpenProject to receive messages from BCFier Browser.JavascriptObjectRepository.UnRegisterAll(); Browser.GetMainFrame() .ExecuteJavaScriptAsync($"CefSharp.DeleteBoundObject('{JavaScriptBridge.REVIT_BRIDGE_JAVASCRIPT_NAME}');"); Browser.JavascriptObjectRepository.Register( JavaScriptBridge.REVIT_BRIDGE_JAVASCRIPT_NAME, _javascriptInterop, true); Browser.GetMainFrame().ExecuteJavaScriptAsync(@"(async function(){ await CefSharp.BindObjectAsync(""" + JavaScriptBridge.REVIT_BRIDGE_JAVASCRIPT_NAME + @""", ""bound""); window." + JavaScriptBridge.REVIT_BRIDGE_JAVASCRIPT_NAME + @".sendMessageToOpenProject = (message) => {console.log(JSON.parse(message))}; // This is the callback to be used by OpenProject for receiving messages window.dispatchEvent(new Event('" + JavaScriptBridge.REVIT_READY_EVENT_NAME + @"')); })();"); // Now in JS, call this: openProjectBridge.messageFromOpenProject('Message from JS'); }
public static JavascriptResponse EvaluateScript(string script, TimeSpan timeout) { try { var browser = VersionBrowser.browser; JavascriptResponse result = new JavascriptResponse(); var task = browser.EvaluateScriptAsync(script, timeout); var complete = task.ContinueWith(t => { if (!t.IsFaulted) { try { JavascriptResponse response = t.Result; result = response; } catch { } } }, TaskScheduler.Default); complete.Wait(); return(result); } catch (Exception e) { } return(new JavascriptResponse()); }
private static Exception ParseResponseException(JavascriptResponse response) { var jsErrorJSON = response.Message; // try parse js exception jsErrorJSON = jsErrorJSON.Substring(Math.Max(0, jsErrorJSON.IndexOf("{"))); jsErrorJSON = jsErrorJSON.Substring(0, jsErrorJSON.LastIndexOf("}") + 1); if (!string.IsNullOrEmpty(jsErrorJSON)) { JsError jsError = null; try { jsError = DeserializeJSON <JsError>(jsErrorJSON); } catch { // ignore will throw error at the end } if (jsError != null) { jsError.Name = jsError.Name ?? ""; jsError.Message = jsError.Message ?? ""; jsError.Stack = jsError.Stack ?? ""; var jsStack = jsError.Stack.Substring(Math.Min(jsError.Stack.Length, (jsError.Name + ": " + jsError.Message).Length)).Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); jsStack = jsStack.Select(l => l.Substring(1)).ToArray(); // " at" -> " at" return(new JavascriptException(jsError.Name, jsError.Message, jsStack)); } } return(new JavascriptException("Javascript Error", response.Message, new string[0])); }
async void OnLoadEnd() { //Check if the browser can execute JavaScript and the ScriptTextBox is filled if (chromeBrowser.CanExecuteJavascriptInMainFrame) { //Evaluate javascript and remember the evaluation result JavascriptResponse response = await chromeBrowser.EvaluateScriptAsync(" document.getElementById('back_ground').width; "); JavascriptResponse response2 = await chromeBrowser.EvaluateScriptAsync(" document.getElementById('back_ground').height; "); if (response.Result != null && response2.Result != null) { width = (int)response.Result; height = (int)response2.Result; this.Invoke(new MethodInvoker(delegate { SetBrowserSize(); LauncherScript.LoadScript(); if (LauncherScript.mScript != "") { chromeBrowser.ExecuteScriptAsync(LauncherScript.mScript); } patcher = new PATCHER(); patcher.Init(); })); //MessageBox.Show( "width:"+response.Result.ToString() + ",height:" + response2.Result.ToString(), "JavaScript Result"); } } }
public async Task <bool> GetProp(string obj, string prop) { string task = "$('" + obj + "').prop('" + prop + "')"; JavascriptResponse res = await _internalBrowser.EvaluateScriptAsync(task); return((bool)res.Result); }
private async void ReadField(object sender, RoutedEventArgs e) { try { string script = "document.getElementsByName('inpersonid')[0].value"; List <string> frameidents = Browser.GetBrowser().GetFrameNames(); foreach (var item in frameidents) { var test2 = Browser.GetBrowser().GetFrame(item); JavascriptResponse response = await test2.EvaluateScriptAsync(script); if (response.Result != null) { string resultS = response.Result.ToString(); // whatever you need _personid = resultS; MessageBox.Show(resultS, $"Personid found in Frame {item}"); } else { MessageBox.Show("not found", $"No PersonID Found in Frame {item}"); } } } catch (Exception Err) { } }
/// <summary> /// Execute a chunk of JavaScript, wait for completion & return response /// </summary> /// <param name="script"></param> public static JavascriptResponse ExecuteJavaScript( IWebBrowser browser, string script) { //if (DebugMx.True) return new JavascriptResponse(); // disable - debug Stopwatch sw = Stopwatch.StartNew(); if (Debug) { DebugLog.Message("Script: " + script); } Task <JavascriptResponse> task = WebBrowserExtensions.EvaluateScriptAsync(browser, script); task.Wait(); if (Debug) { DebugLog.StopwatchMessage("Script complete, Time: ", sw); } JavascriptResponse r = task.Result; return(r); }
/// <summary> /// 方法内部定义了死循环,用此循环来捕捉需要执行的js 代码 /// </summary> private void InnerFlushScripts() { ScriptTask scriptTask = null; List <ScriptTask> list = new List <ScriptTask>(); ScriptTask scriptTask2; for (; ;) // { scriptTask2 = this.pendingScripts.Take(this.flushTaskCancelationToken.Token); if (scriptTask2.WaitHandle != null) { break; } list.Add(scriptTask2); if (this.pendingScripts.Count <= 0) { goto IL_42; } } scriptTask = scriptTask2; IL_42: if (list.Count > 0) { Task <JavascriptResponse> task = this.OwnerWebView.chromium.EvaluateScriptAsync(JavascriptExecutor.WrapScriptWithErrorHandling(string.Join(";" + Environment.NewLine, from s in list select s.Script)), this.OwnerWebView.DefaultScriptsExecutionTimeout); task.Wait(this.flushTaskCancelationToken.Token); JavascriptResponse response = task.Result; if (!response.Success) { this.OwnerWebView.ExecuteWithAsyncErrorHandling(delegate { throw JavascriptExecutor.ParseResponseException(response); }); } } if (scriptTask != null) { Task <JavascriptResponse> task2 = null; try { IWebBrowser chromium = this.OwnerWebView.chromium; string script = scriptTask.Script; TimeSpan? timeout = scriptTask.Timeout; task2 = chromium.EvaluateScriptAsync(script, (timeout != null) ? timeout : this.OwnerWebView.DefaultScriptsExecutionTimeout); task2.Wait(this.flushTaskCancelationToken.Token); scriptTask.Result = task2.Result; } catch (Exception exception) { if (task2 == null || !task2.IsCanceled) { scriptTask.Exception = exception; } } finally { scriptTask.WaitHandle.Set(); } } }
private void BackupEvents() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = SYSTEM.configPath; saveFileDialog.Filter = CONST.BLOCKLY.EVENT_FILE_FILTER; saveFileDialog.FileName = CONST.BLOCKLY.DEFAULT_EVENT_FILE; if (saveFileDialog.ShowDialog() != true) { return; } string fileName = saveFileDialog.FileName.Trim(); string xml = ""; browser.EvaluateScriptAsync("getXml();").ContinueWith(x => { JavascriptResponse response = x.Result; if (response.Success) { xml = response.Result.ToString(); BackupXml(fileName, xml); } else { MessageBox.Show("Fail getting data from Blockly"); } }); }
public async static Task <bool> InitMainFunctions() { string script = System.IO.File.ReadAllText("script.js"); JavascriptResponse response = await MainForm.mainForm.Browsers.SeaMapBrowser.EvaluateScriptAsync(script); return(response.Success); }
public async Task <Tuple <JavascriptResponse, FrameLoadEndEventArgs> > EvaluatePageMoveScriptAsync(string script, TimeSpan?timeSpan = null) { await WaitRequest(); var isNavigating = true; JavascriptResponse javascriptResponse = null; FrameLoadEndEventArgs frameLoadEndEventArgs = null; EventHandler <FrameLoadEndEventArgs> complete = (sender, e) => { isNavigating = false; frameLoadEndEventArgs = e; }; WebBrowser.FrameLoadEnd += complete; await Task.Run(() => { var scriptAsync = WebBrowser.EvaluateScriptAsync(script, timeSpan); scriptAsync.Wait(); javascriptResponse = scriptAsync.Result; }); await Task.Run(() => { while (isNavigating) { Thread.Yield(); } }); WebBrowser.FrameLoadEnd -= complete; return(new Tuple <JavascriptResponse, FrameLoadEndEventArgs>(javascriptResponse, frameLoadEndEventArgs)); }
public static async Task <bool> SelectByValue(this ChromiumWebBrowser browser, string selectorClassName, string value) { JavascriptResponse result = await browser.GetMainFrame().EvaluateScriptAsync( "{" + $"let found = false;" + $"let views = document.getElementsByClassName('{selectorClassName}');" + $"if(views.length == 1)" + "{" + "for(let i = 0; i < views[0].options.length; ++i)" + "{" + $"if(views[0].options[i].text == '{value}')" + "{" + "views[0].selectedIndex = i;" + "let e = document.createEvent('HTMLEvents');" + "e.initEvent('change', true, true);" + "views[0].dispatchEvent(e);" + "found = true;" + "break;" + "}" + "}" + "}" + "found == true" + "}" ); return((bool)result.Result); }
public void Clear() { html = null; java = null; IsLoading = null; lastExec = null; lastEval = null; }
public async Task <string> GetInnerHTML(string xpath) { // await GetElementByXpath(xpath);; //JavascriptResponse res = await browser.EvaluateScriptAsync("(function(){return window.innerHTML; })()"); JavascriptResponse res = await Chromium.EvaluateScriptAsync("(function(){return document.evaluate('" + xpath + "', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).innerHTML; })();"); return((string)res.Result); }
private async void ExecuteBtn_Click(object sender, EventArgs e) { if (Monaco.CanExecuteJavascriptInMainFrame) { JavascriptResponse response = await Monaco.EvaluateScriptAsync("GetText();"); ExecuteScript(response.Result.ToString()); } }
private async Task <JavascriptResponse> EvaluateScriptAsync(string script) { Console.WriteLine(script); JavascriptResponse x = await browser.EvaluateScriptAsync(script); await Task.Delay(Int32.Parse((String)programConfig["script-delay"])); return(x); }
public void Process(ISemanticProcessor proc, IMembrane membrane, JavascriptResponse resp) { byte[] utf8data = resp.Script.to_Utf8(); resp.Context.Response.ContentType = "text/javascript"; resp.Context.Response.ContentEncoding = Encoding.UTF8; resp.Context.Response.ContentLength64 = utf8data.Length; resp.Context.Response.OutputStream.Write(utf8data, 0, utf8data.Length); resp.Context.Response.Close(); }
//private void googleDriveTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) //{ // handle_googleDriveTreeView_Node_selected(e.Node, null, true); //} private static async System.Threading.Tasks.Task run_ChromiumWebBrowser_update_tree_menue_checkboxes(ChromiumWebBrowser wb, string f_name, object[] args) { JavascriptResponse res = await wb.EvaluateScriptAsync(f_name, args); if (!res.Success) { throw new Exception("failed to run javascript in browser."); } }
/// <summary> /// 执行js脚步,等待返回,timeout 15秒 /// </summary> /// <param name="b">The b.</param> /// <param name="script">The script.</param> /// <returns>System.Object.</returns> static object EvaluateScript(ChromiumWebBrowser b, string script) { var task = b.EvaluateScriptAsync(script); task.Wait(15000); JavascriptResponse response = task.Result; return(response.Success ? (response.Result ?? "") : response.Message); }
private async Task <JavascriptResponse> EvaluateScriptAsync(string script) { Console.WriteLine(script); JavascriptResponse x = await browser.EvaluateScriptAsync(script); await Task.Delay(100); return(x); }
// Command line execution private async void ExecuteJavaScriptBtn_Click(object sender, RoutedEventArgs e) { if (/*Browser.CanExecuteJavascriptInMainFrame &&*/ !string.IsNullOrWhiteSpace(ScriptTextBox.Text)) { JavascriptResponse response = await Browser.EvaluateScriptAsync(ScriptTextBox.Text); } // TODO - view history and active geometry ScriptTextBox.Clear(); }
private static Exception ParseResponseException(JavascriptResponse response, IEnumerable <string> evaluatedScriptFunctions) { var jsErrorJSON = response.Message; // try parse js exception jsErrorJSON = jsErrorJSON.Substring(Math.Max(0, jsErrorJSON.IndexOf("{"))); jsErrorJSON = jsErrorJSON.Substring(0, jsErrorJSON.LastIndexOf("}") + 1); var evaluatedStackFrames = evaluatedScriptFunctions.Where(f => !string.IsNullOrEmpty(f)) .Select(f => new JavascriptStackFrame() { FunctionName = f, SourceName = "eval" }); if (!string.IsNullOrEmpty(jsErrorJSON)) { JsError jsError = null; try { jsError = DeserializeJSON <JsError>(jsErrorJSON); } catch { // ignore will throw error at the end } if (jsError != null) { jsError.Name = jsError.Name ?? ""; jsError.Message = jsError.Message ?? ""; jsError.Stack = jsError.Stack ?? ""; var jsStack = jsError.Stack.Substring(Math.Min(jsError.Stack.Length, (jsError.Name + ": " + jsError.Message).Length)) .Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var parsedStack = new List <JavascriptStackFrame>(); parsedStack.AddRange(evaluatedStackFrames); foreach (var stackFrame in jsStack) { var frameParts = StackFrameRegex.Match(stackFrame); if (frameParts.Success) { parsedStack.Add(new JavascriptStackFrame() { FunctionName = frameParts.Groups["method"].Value, SourceName = frameParts.Groups["location"].Value, LineNumber = int.Parse(frameParts.Groups["line"].Value), ColumnNumber = int.Parse(frameParts.Groups["column"].Value) }); } } return(new JavascriptException(jsError.Name, jsError.Message, parsedStack)); } } return(new JavascriptException("Javascript Error", response.Message, evaluatedStackFrames)); }
public static async Task <bool> CheckItemOfClassVisible(this ChromiumWebBrowser browser, string className) { JavascriptResponse result = await browser.GetMainFrame().EvaluateScriptAsync( "{" + $"let views = document.getElementsByClassName('{className}');" + $"views.length == 1 && views[0].style.display != 'none'" + "}" ); return((bool)result.Result); }
public static async Task <bool> TryFindView(this ChromiumWebBrowser browser, string className) { JavascriptResponse result = await browser.GetMainFrame().EvaluateScriptAsync( "{" + $"let views = document.getElementsByClassName('{className}');" + $"views.length != 0;" + "}" ); return((bool)result.Result); }
private async Task <JavascriptResponse> EvaluateJavaScript(string script) { JavascriptResponse response = null; if (this.ChromiumWebBrowser.CanExecuteJavascriptInMainFrame) { response = await this.ChromiumWebBrowser.EvaluateScriptAsync(script); } return(response); }
// Enter to execute command line private async void textBoxKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { if (!string.IsNullOrWhiteSpace(ScriptTextBox.Text)) { JavascriptResponse response = await Browser.EvaluateScriptAsync(ScriptTextBox.Text); } ScriptTextBox.Clear(); } }