我在iframe中加载了一些第三方网站,用于我正在处理的项目,但我需要以某种方式检测这些网站是否播放任何声音。我没有看到任何使用WebDriver的方法来查看声音是否在浏览器中播放,还有其他方法可以查询VM本身吗?
答案 0 :(得分:1)
在现代 HTML5 时代,对于任何检查音频是否正在播放的人,我们可以使用 html5 中的 audio
和 video
标签来使用 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;
}
上面的代码可以修改为跟踪帧内的帧以及通过将其更改为递归函数