Ejemplo n.º 1
0
        public async Task SwitchToFrame(int frameIndex, CancellationToken cancellationToken = default(CancellationToken))
        {
            var script = "function(xpath) {" + "  return document.evaluate(xpath, document, null, " + "      XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;" + "}";
            var xpath  = "(/html/body//iframe|/html/frameset//frame)";

            xpath += $"[{(frameIndex + 1).ToString()}]";
            var args = new List <string> {
                xpath
            };                                  //$"\"{xpath}\"" };

            try
            {
                var frame = await _asyncChromeDriver.WebView.GetFrameByFunction(_asyncChromeDriver.Session.GetCurrentFrameId(), script, args, cancellationToken).ConfigureAwait(false);

                var argsJson = Newtonsoft.Json.JsonConvert.SerializeObject(args);
                var res      = await _asyncChromeDriver.WebView.CallFunction(script, argsJson, _asyncChromeDriver.Session.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

                var elementId           = ResultValueConverter.ToElementId(res?.Result?.Value, _asyncChromeDriver.Session.GetElementKey());
                var chromeDriverId      = Util.GenerateId();
                var kSetFrameIdentifier = "function(frame, id) {" + "  frame.setAttribute('cd_frame_id_', id);" + "}";
                argsJson = $"{_asyncChromeDriver.Session.GetElementJsonString(elementId)}, \"{chromeDriverId}\"";
                var res2 = await _asyncChromeDriver.WebView.CallFunction(kSetFrameIdentifier, argsJson, _asyncChromeDriver.Session.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

                _asyncChromeDriver.Session.SwitchToSubFrame(frame, chromeDriverId);
            }
            catch
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        public async Task SwitchToFrameByElement(string elementId, CancellationToken cancellationToken = default(CancellationToken))
        {
            var isDisplayed = await _asyncChromeDriver.ElementUtils.IsElementDisplayed(elementId, cancellationToken).ConfigureAwait(false);

            var script = "function(elem) { return elem; }";
            var args   = new List <string> {
                $"{{\"{_asyncChromeDriver.Session.GetElementKey()}\":\"{elementId}\"}}"
            };

            try
            {
                var frame = await _asyncChromeDriver.WebView.GetFrameByFunction(_asyncChromeDriver.Session.GetCurrentFrameId(), script, args, cancellationToken).ConfigureAwait(false);

                var argsJson = Newtonsoft.Json.JsonConvert.SerializeObject(args);
                var res      = await _asyncChromeDriver.WebView.CallFunction(script, argsJson, _asyncChromeDriver.Session.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

                var elementId2          = ResultValueConverter.ToElementId(res?.Result?.Value, _asyncChromeDriver.Session.GetElementKey());
                var chromeDriverId      = Util.GenerateId();
                var kSetFrameIdentifier = "function(frame, id) {" + "  frame.setAttribute('cd_frame_id_', id);" + "}";
                argsJson = $"{_asyncChromeDriver.Session.GetElementJsonString(elementId2)}, \"{chromeDriverId}\"";
                var res2 = await _asyncChromeDriver.WebView.CallFunction(kSetFrameIdentifier, argsJson, _asyncChromeDriver.Session.GetCurrentFrameId(), true, false, cancellationToken).ConfigureAwait(false);

                _asyncChromeDriver.Session.SwitchToSubFrame(frame, chromeDriverId);
            }
            catch
            {
                throw;
            }
        }