Потоковое видео 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;")