Потоковое видео html5 player. как автоматизировать скользящий поиск и регуляторы громкости

Я использую Webdriver в Ruby и хочу проверить ползунок поиска и регулировки громкости проигрывателя html5 dash-cenc внутри iFrame.

Идея состоит в том, чтобы просто проверить, принимает ли игрок команду для поиска времени "х" или перейти к началу воспроизведения, а затем искать половину индикатора выполнения поиска. Проблема в том, что при ручном тестировании плеера "клавиши со стрелками" не работали, поэтому единственный способ поиска воспроизведения - щелкнуть нужное место на панели поиска.

Вот фрагмент HTML, который я хочу проверить, когда проигрыватель начинает воспроизведение:

<div id="progressbar" data-value="0" class="ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all"><div class="ui-slider-range ui-widget-header ui-corner-all ui-slider-range-min" style="width: 61.436170212766%;"></div><span class="ui-slider-handle ui-state-default ui-corner-all" tabindex="0" style="left: 61.436170212766%;"><div class="tooltip-container" style="display: none;"><div id="time-tooltip">0:03:50</div><div class="triangle-down"></div></div></span></div>

Я попробовал пару примеров без удачи, это часть кода, которую я сделал, тестовый пример запускается, и событие "click" в элементе "Toggle-play" работает просто отлично:

    reg = @driver.find_element(:id, "fancybox-frame")
    @driver.switch_to.frame reg
    @driver.find_element(:id, "toggle-play").click

Я прикрепил скриншот элементов управления мультимедиа и часть "проверить элемент" браузера Google Chrome (плеер работает только с Google Chrome, а не с Firefox)

2 ответа

Решение

Лично я считаю, что лучшим подходом является использование Java Script API плеера. Найдите документацию и выполните команды, вызвав методы JavaScript для выполнения операций. Код для выполнения JavaScript в Ruby Driver:

# execute arbitrary javascript
puts driver.execute_script("return window.location.pathname")
# pass elements between Ruby and JavaScript
element = driver.execute_script("return document.body")
driver.execute_script("return arguments[0].tagName", element) #=> "BODY"

Я нашел ответ и попробовал следующие команды для игрока:

@driver.execute_script("document.getElementById('dashplayer').load();")
@driver.execute_script("document.getElementById("dashplayer").pause();")
@driver.execute_script("document.getElementById('dashplayer').paused;")
@driver.execute_script("document.getElementById("dashplayer").play();")
@driver.execute_script("document.getElementById('dashplayer').volume;")
@driver.execute_script("document.getElementById('dashplayer').volume=0.5;")
Другие вопросы по тегам