检测声音是否在硒中播放

时间:2014-09-25 15:21:44

标签: selenium selenium-webdriver

我在iframe中加载了一些第三方网站,用于我正在处理的项目,但我需要以某种方式检测这些网站是否播放任何声音。我没有看到任何使用WebDriver的方法来查看声音是否在浏览器中播放,还有其他方法可以查询VM本身吗?

1 个答案:

答案 0 :(得分:1)

在现代 HTML5 时代,对于任何检查音频是否正在播放的人,​​我们可以使用 html5 中的 audiovideo 标签来使用 javascript 执行程序检查声音播放。下面的代码是在 java 和 selenium 中

boolean isPlaying = false;
// find all frames and iterate over it.
// This finds only the top level frames. Frames inside frames are not considered for this answer
for (WebElement iframe: driver.findElements(By.cssSelector('iframe'))) {
    driver.switchTo().frame(iframe);
    // find all the video and audio tags within the frame
    for (WebElement player: driver.findElements(By.cssSelector('audio,video'))) {
       // check if the argument paused is true or false. 
       // In case audio or video is playing, paused is false
       String paused = (String) ((JavascriptExecutor) driver).executeScript('return arguments[0].paused', player);
       if (paused.equals('false')) {
           isPlaying = true;
           break;
       }
    }
    // switch out from the frame
    driver.switchTo().defaultContent();
    if (isPlaying)
        break;
}

上面的代码可以修改为跟踪帧内的帧以及通过将其更改为递归函数