代码之家  ›  专栏  ›  技术社区  ›  Godwin

如何使用selenium加载视频?

  •  0
  • Godwin  · 技术社区  · 7 年前

    我正在尝试检测网页上的视频是否有音频轨迹,但我无法让selenium加载视频。

    以下是我正在做的事情:

    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);
    

    我使用的是一个共享的selenium网格,它应该访问真实(非headless)版本的Firefox和Chrome。我不太清楚这些机器是如何设置的,所以我可能需要向驱动程序发送额外的参数来启用视频,但我还无法确定这些是不是和什么。

    编辑

    为了确定,我拍了一张截图:

    a video component showing "no video with supported format and mime type found"

    0 回复  |  直到 7 年前