public async Task <string> GetElementEffectiveStyle(string elementId, string property, CancellationToken cancellationToken = new CancellationToken())
        {
            var res = await WebView.CallFunction(atoms.GET_EFFECTIVE_STYLE, $"{{\"{Session.GetElementKey()}\":\"{elementId}\"}}, \"{property}\"", Session?.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(ResultValueConverter.AsString(res?.Result?.Value));
        }
        public async Task <bool> SetOptionElementSelected(string elementId, bool selected = true, CancellationToken cancellationToken = new CancellationToken())
        {
            var res = await WebView.CallFunction(atoms.CLICK, $"{{\"{Session.GetElementKey()}\":\"{elementId}\"}}, {selected.ToString().ToLower()}", Session?.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(ResultValueConverter.ToBool(res?.Result?.Value));
        }
        public async Task <bool> IsElementEnabled(string elementId, CancellationToken cancellationToken = new CancellationToken())
        {
            var res = await WebView.CallFunction(atoms.IS_ENABLED, $"{{\"{Session.GetElementKey()}\":\"{elementId}\"}}", Session?.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(ResultValueConverter.ToBool(res?.Result?.Value));
        }
        public async Task <string> GetElementTagName(string elementId, CancellationToken cancellationToken = new CancellationToken())
        {
            var func = "function(elem) { return elem.tagName.toLowerCase(); }";
            var res  = await WebView.CallFunction(func, $"{{\"{Session.GetElementKey()}\":\"{elementId}\"}}", Session?.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(ResultValueConverter.AsString(res?.Result?.Value));
        }
        public async Task <bool> IsOptionElementTogglable(string elementId, CancellationToken cancellationToken = new CancellationToken())
        {
            //var expression = $"({is_option_element_toggleable.JsSource}).apply(null, {{\"{Session.GetElementKey()}\":\"{elementId}\"}})";
            //var frameId = Session == null ? "" : Session.GetCurrentFrameId();
            //var res = await webView.EvaluateScript(expression, frameId, true, cancellationToken);
            var res = await WebView.CallFunction(is_option_element_toggleable.JsSource, $"{{\"{Session.GetElementKey()}\":\"{elementId}\"}}", Session?.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(ResultValueConverter.ToBool(res?.Result?.Value));
        }
Esempio n. 6
0
        public async Task <JToken> FindElements(string strategy, string expr, string startNode = null, CancellationToken cancellationToken = new CancellationToken())
        {
            var func    = atoms.FIND_ELEMENTS;
            var frameId = _session == null ? "" : _session.GetCurrentFrameId();

            expr = Regex.Replace(expr, @"(['""\\#.:;,!?+<>=~*^$|%&@`{}\-/\[\]\(\)])", @"\$1");
            var args = $"{{\"{strategy}\":\"{expr}\"}}";

            if (startNode != null)
            {
                args += $", {{\"{_session.GetElementKey()}\":\"{startNode}\"}}";
            }
            var res = await _webView.CallFunction(func, args, frameId, true, false, cancellationToken).ConfigureAwait(false);

            var value     = res?.Result?.Value as JToken;
            var exception = ResultValueConverter.ToWebBrowserException(value);

            if (exception != null)
            {
                throw exception;
            }
            return(value?["value"]);
        }