Как я могу загрузить видео с использованием селена? - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь определить, есть ли у видео на веб-странице аудиодорожка, но я не могу получить селен для загрузки видео.

Вот примерно то, что я делаю:

const webdriver = require("selenium-webdriver");
const driver = new webdriver.Builder()
    .forBrowser("firefox")
    .usingServer(myGridURL)
    .build();

const done = (result) => console.log(result);

driver.get(urlWithHTML5Video).then(() => {
    driver.executeAsyncScript(() => {
        const done = arguments[arguments.length - 1];
        const video = document.getElementsByTagName("video")[0];

        video.addEventListener("loadeddata", function() {
            if (this.mozHasAudio > 0) {
                done("audio track detected");
            } else {
                done("audio track not detected");
            }
        }, false);

        video.load();

        setTimeout(() => {
            done("video did not load");
        }, 10000);
    });
}, [], done);

При этом всегда печатается «видео не загружено», даже когда я проверяю состояние после ожидания в течение нескольких секунд, видео readyState всегда 0 и mozHasAudio всегда false. Я также пытался сделать это в Chrome, хотя я получаю значение readState, которое указывает, что видео загружено, я не могу получить положительное значение для webkitAudioDecodedByteCount, которое должно указывать, что у видео есть звуковая дорожка (что оно и делает) .

Вот что я попробовал на Chrome:

video.play().then(() =>
    setTimeout(() => {
        console.log(video.webkitAudioDecodedByteCount); // never reached
        video.pause();
    }, 100))
setTimeout(() => {
    console.log(video.webkitAudioDecodedByteCount); // always 0
    console.log("video did not load"); // always reached
}, 10000);

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

EDIT

Просто чтобы быть уверенным, я сделал скриншот:

a video component showing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...