コード例 #1
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        public Task SetValueAsync(string value)
        {
            var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0];" +
                         $"obj.value = '{value}';";

            return(ExecuteScriptAsync(script));
        }
コード例 #2
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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;
                }
            }
        }
コード例 #3
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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();
                }
            }
        }
コード例 #4
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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));
        }
コード例 #5
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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();
            }
        }
コード例 #6
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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();
            }
        }
コード例 #7
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        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;
                }
            }
        }
コード例 #8
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        public Task ClickAsync()
        {
            var script = "var obj = " + JavaScriptSnippets.GetFindScript(_xpath) + "; obj.click()";

            return(ExecuteScriptAsync(script));
        }
コード例 #9
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        private Task IncludeJQueryToPageAsync()
        {
            var script = JavaScriptSnippets.GetJQuery();

            return(ExecuteScriptAsync(script));
        }
コード例 #10
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        public Task ScrollIntoViewAsync()
        {
            var script = $"{JavaScriptSnippets.GetFindScript(_xpath)}[0].scrollIntoView();";

            return(ExecuteScriptAsync(script));
        }
コード例 #11
0
ファイル: WebElement.cs プロジェクト: trydex/Browser
        public Task RiseEventAsync(string eventName)
        {
            var script = $"var obj = {JavaScriptSnippets.GetFindScript(_xpath)}[0]; $(obj).trigger('{eventName}');";

            return(ExecuteScriptAsync(script));
        }
コード例 #12
0
 public Snippets(ZoliloPage page)
 {
     this.page = page;
     this.javascript = new JavaScriptSnippets(this);
 }