Как обрабатывать всплывающие видео в Selen Webdriver C # - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь автоматизировать приложение для просмотра видео. При нажатии на ссылку «Начать вызов», в текущем / новом окне браузера появляется новое всплывающее окно.

Я пытаюсь автоматизировать компоненты видео, переключаясь на всплывающее окно видео (модальное окно), но переключение не происходит

Я пытался переключиться в окно, пробовал с переключением на фрейм, пробовал с оповещениями, но ничего не получалось

HTML код

<div class="windowframe popup ui-draggable" style="visibility: visible; position: absolute; top: 20px; left: 514px; width: 1000px; z-index: 12; display: block;">
    <h2 class="title clearfix ui-draggable-handle">
        <span class="p-text">Video Consult</span>
        <button class="p-button p-button-close" name="close" tabindex="1">
            <div class="p-icon component icon-resolved">
                <svg style="" width="512px" height="512px" viewBox="0 0 512 512" version="1.1" id="Layer_1" x="0px"
                     y="0px">
                    <path d=""></path>
                </svg>
            </div>
        </button>
        <button class="p-button p-button-minimize" name="minimize" tabindex="1" style="display: none;">
            <div class="p-icon component icon-resolved">
                <svg style="" width="512px" height="512px" viewBox="0 0 512 512" version="1.1" id="Layer_1" x="0px"
                     y="0px">
                    <rect width="384" height="64" x="64" y="224"></rect>
                </svg>
            </div>
        </button>
    </h2>
    <div class="windowcontent" style="height: 396.2px;">
        <div control="ViewContainer" class="viewcontainer p-view-viewcontainer control p-view p-view-mode-view p-view-no-toolbar p-view-no-title"
             float="" style="height: 100%;"
             name="VideoWebRTCView" tabindex="0">
            <h2 class="p-container title component hide"><span class="p-text component hide">Video Consult</span>
                <div class="busyindicator">
                    <div class="p-icon component icon-resolved">
                        <div class="spinner">
                            <div class="spinner-circle"></div>
                        </div>
                    </div>
                </div>
            </h2>
            <div class="p-content content" name="VideoWebRTCView" xmlns:petrel="urn:PetrelXslExtensions" xmlns:bind=" "
                 xmlns:fx="urn:ExpressionFunctions">
                <div control="iFrame" class="iframe p-view-iframe control p-view p-view-mode-view p-view-no-toolbar"
                     float="" style="height: 366px;" name="Video">
                    <iframe width="100%" height="100%" scrolling="auto" frameborder="0"
                            seamless="seamless" src=""></iframe>
                </div>
            </div>
            <div class="metadata"></div>
        </div>
    </div>
    <div class="windowfooter clearfix">
        <div class="resize ui-draggable ui-draggable-handle" style="position: absolute;">
        </div>
        <div class="footerText"></div>
        <div class="buttonholder"></div>
    </div>
</div>

Приведенный выше HTML-код является динамическим, при нажатии на ссылку вышеуказанный код в теге div добавляется в тег body.

попытался идентифицировать элемент, как показано ниже, но его исключение noSuchElementException

WebDriver.FindElement(By.XPath("//*[contains(@class,'windowframe')]"));

пробовал с переключением в окно, но здесь размер всегда 1

List<string> listWindow = _context.WebDriver.WindowHandles.ToList();
            int size = listWindow.Count;
            Console.WriteLine("size: " + size);
            foreach (var handle in listWindow)
            {
                Console.WriteLine("window name: " + handle);
                if (!parentwindow.Equals(handle))
                {
                    _context.WebDriver.SwitchTo().Window(handle);
                }

            }

пробовал с переключением на фрейм

 IWebElement frameele = _context.WebDriver.FindElement(By.Name("Video"));
                _context.WebDriver.SwitchTo().Frame(frameele);

1 Ответ

0 голосов
/ 22 апреля 2019
  • Поскольку видео отсутствует в другой вкладке / окне, вам не нужно получать дескрипторы окна и переключать окно.
  • Если видео находится в div с классом windowframe, а div не находится в другом iframe, просто попробуйте получить доступ к div без изменения фокуса.
    • Если это не работает, попробуйте это
      driver.SwitchTo().ActiveElement()
  • Если видео находится в iframe, вам нужно переключиться на iframe, передав элемент iframe или идентификатор iframe.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...