Selenium webdriver - Найти координаты элемента видеопроигрывателя с вкладками для взаимодействия - PullRequest
0 голосов
/ 10 июня 2019

Я бы хотел автоматизировать видеоплеер на веб-странице, используя Selenium в Python.

Я не могу найти интерактивные части плеера с помощью driver.find_element_by_... Я решил попробовать это сделать, создав специальную логику для браузера, которая знает, как перемещаться по странице и плееру с помощью навигации по клавиатуре (вкладки счетчика для Chrome, против Safari, против Firefox и т. д.).

driver.find_element_by_tag_name('body').send_keys(Keys.TAB))

Я могу выбрать каждый элемент управления проигрывателя с помощью вкладки (воспроизведение / пауза, текущая позиция, регулировка громкости звука, полный экрани дополнительные опции) и имели умеренный успех, манипулируя элементами управления игрока с помощью ActionChains, однажды выбранной с помощью навигации TAB

actions = ActionChains(driver)
actions.send_keys(Keys.DOWN) # to reduce volume or 
actions.send_keys(Keys.LEFT) # to rewind playback

Примером чего-то, что не работает должным образом с этим методом, является отправка Key.SPACE до кнопки MUTE при выборе.Вместо этого пробел применяется как действие навигации по странице и прокручивает страницу вниз, как нажатие page down.Я ищу метод, который либо заставляет элементы управления работать должным образом при ручной навигации по странице с помощью клавиатуры, напр.пространство на выделенном объекте взаимодействует и обычно отключает видео в этом контексте, или обходной путь, который позволяет мне выполнить то же самое.Для этого я подумал, смогу ли я получить координаты окон выбранного объекта TAB в видеоплеере и просто выполнить щелчок, который, по крайней мере, позволил бы мне взаимодействовать с элементом управления.

Также, если яЯ собираюсь об этом все неправильно, дайте мне знать.Спасибо!

1 Ответ

0 голосов
/ 10 июня 2019

То, что вы действительно ищете, это как управлять Shadow DOM.Это веб-элементы внутри видеопроигрывателя.

Я ответил, как добраться до Shadow DOM, в другом вопросе , хотя и для Java.Однако принцип тот же.

Вы можете прочитать все это по ссылке, но в основном вы создаете «начальную точку» WebElement в Shadow DOM через JavaScript, тогда все последующие просмотры ссылаются на него.:

WebElement button = startingPoint.findElement(By.cssSelector("..."));
...