public Task SetValueAsync(string value) { var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0];" + $"obj.value = '{value}';"; return(ExecuteScriptAsync(script)); }
public async Task FindAsync() { await IncludeJQueryToPageAsync().ConfigureAwait(false); var script = JavaScriptSnippets.GetFindScript(_xpath) + ".length;"; await ExecuteScriptAsync(script, Continuation).ConfigureAwait(false); void Continuation(Task <JavascriptResponse> t) { if (t.IsFaulted) { return; } var response = t.Result; if (response.Success && int.TryParse(response.Result?.ToString(), out int count) && count > 0) { IsNull = false; } else { IsNull = true; } } }
public async Task <string> DrawToBitmapAsync() { var html2Canvas = JavaScriptSnippets.GetHtml2Canvas(); await ExecuteScriptAsync(html2Canvas).ConfigureAwait(false); var html2CanvasPlugin = JavaScriptSnippets.GetHtml2CanvasPluginForJQuery(); await ExecuteScriptAsync(html2CanvasPlugin).ConfigureAwait(false); var script = JavaScriptSnippets.GetHtmlElementCapture(_xpath); string base64 = null; await ExecuteScriptAsync(script).ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false); //Wait canvas rendering string getBase64Script = "document.htmlElementBase64;"; await ExecuteScriptAsync(getBase64Script, Continuation).ConfigureAwait(false); return(base64); void Continuation(Task <JavascriptResponse> task) { if (!task.IsFaulted) { var response = task.Result; base64 = response.Result?.ToString(); } } }
public Task SetAttributeAsync(string attrName, string attrValue) { if (attrName.ToLower() == "value") { return(SetValueAsync(attrValue)); } var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0];" + $"obj.setAttribute('{attrName}','{attrValue}');"; return(ExecuteScriptAsync(script)); }
public async Task <string> GetValueAsync() { var script = $"{JavaScriptSnippets.GetFindScript(_xpath)}[0].value;"; string result = null; await ExecuteScriptAsync(script, Continuation).ConfigureAwait(false); return(result); void Continuation(Task <JavascriptResponse> t) { if (t.IsFaulted) { return; } var response = t.Result; result = response.Result?.ToString(); } }
public async Task <string> GetAttributeAsync(string attrName) { var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0];" + $"obj.getAttribute('{attrName}');"; string result = null; await ExecuteScriptAsync(script, Continuation).ConfigureAwait(false); return(result); void Continuation(Task <JavascriptResponse> t) { if (t.IsFaulted) { return; } var response = t.Result; result = response.Result?.ToString(); } }
public async Task <List <IWebElement> > FindChildrenByXPathAsync(string xpath) { var parentXpath = _xpath; var childXpath = parentXpath + xpath; await IncludeJQueryToPageAsync().ConfigureAwait(false); var script = JavaScriptSnippets.GetFindScript(childXpath) + ".length"; int childrenCount = 0; await ExecuteScriptAsync(script, GetChildrenCountCallback).ConfigureAwait(false); var children = new List <IWebElement>(); var tasks = new List <Task>(); for (int i = 1; i <= childrenCount; i++) { var child = new WebElement(_browser, $"({childXpath})[{i}]"); tasks.Add(child.FindAsync()); children.Add(child); } await Task.WhenAll(tasks).ConfigureAwait(false); return(children); void GetChildrenCountCallback(Task <JavascriptResponse> task) { if (!task.IsFaulted) { var response = task.Result; int.TryParse(response.Result?.ToString(), out int count); childrenCount = count; } } }
public Task ClickAsync() { var script = "var obj = " + JavaScriptSnippets.GetFindScript(_xpath) + "; obj.click()"; return(ExecuteScriptAsync(script)); }
private Task IncludeJQueryToPageAsync() { var script = JavaScriptSnippets.GetJQuery(); return(ExecuteScriptAsync(script)); }
public Task ScrollIntoViewAsync() { var script = $"{JavaScriptSnippets.GetFindScript(_xpath)}[0].scrollIntoView();"; return(ExecuteScriptAsync(script)); }
public Task RiseEventAsync(string eventName) { var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0]; $(obj).trigger('{eventName}');"; return(ExecuteScriptAsync(script)); }
public Snippets(ZoliloPage page) { this.page = page; this.javascript = new JavaScriptSnippets(this); }