【问题标题】:Play the video using Selenium WebDriver with Java使用 Selenium WebDriver 和 Java 播放视频
【发布时间】:2026-01-23 21:35:01
【问题描述】:

我正在尝试播放视频(使用 JUnit) - 以下网站的 Day01。 http://www.itelearn.com/live-training/security-testing-live-training 我想要实现的是在播放视频后我会截屏以证明视频播放正常。点击 Day01 视频后,它会在一个新窗口中打开——当我查看代码时,我意识到他们使用了 iFrame。我可以关闭此视频窗口,但无法播放/暂停此视频。

要关闭视频,我使用了代码-- WebDriverWait 等待 = 新的 WebDriverWait(驱动程序, 20); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xPath))).click();

我是测试新手,请帮助我。

【问题讨论】:

    标签: java testing selenium-webdriver


    【解决方案1】:
    WebDriver driver=new FirefoxDriver();
    driver.get("https://www.wonderplugin.com/wordpress-lightbox");
    WebElement element=driver.findElement(By.xpath("//a[contains(text(),'Open a Div in Lightbox')]"));
    element.click();
    WebElement frameElement=driver.findElement(By.xpath("//iframe[@src='https://www.youtube.com/embed/wswxQ3mhwqQ']"));
            driver.switchTo().frame(frameElement);
            driver.findElement(By.xpath("//button[@aria-label=\'Play\']")).click();
    

    【讨论】:

    • 您能否解释一下这段代码的作用以及它如何回答原始问题
    • 它将打开一个帧并在该帧中运行视频
    【解决方案2】:

    尝试使用 JavaScriptExecutor。以下方法对我有用:

    import org.openqa.selenium.JavascriptExecutor;
    
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js .executeScript("document.getElementById(\"video\").play()");
    

    我能够播放来自https://www.w3.org/2010/05/video/mediaevents.html 的视频并验证进度字段。

    祝你好运!

    【讨论】:

      【解决方案3】:

      那么你切换到 iframe 了吗?

      试试下面未经测试的Java代码,请注意这里的逻辑很简单,你通过xpath或者css选择器找到iframe元素,然后切换到它,然后点击。但是,自动化播放器可能并不那么容易和稳定。如果可以,请提供反馈,谢谢。

      WebDriverWait wait = new WebDriverWait(driver, 20);
      WebElement playerIframe = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#sb-player iframe")));
      driver.switchTo().frame(playerIframe);
      
      // make sure you have html5 video loaded, instead of flash
      // otherwise Selenium won't find a thing
      driver.findElement(By.cssSelector("svg.ytp-cued-icon")).click();
      

      要默认加载 HTML5,请在启动 Selenium 时查看this page 或加载扩展名HTML5 Video for YouTube

      【讨论】:

      • 感谢您的回复。我尝试了这段代码,但它不起作用。它的返回类型为 eis void。 WebElement playerIframe=wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#sb-player iframe"))).click();
      • 是的,这只是一个简单的语法错误,因为我没有 Java 环境。你当然可以自己解决。只需删除结尾click(),因为我从您的原始帖子中复制了该行并忘记了删除。
      • 非常感谢您帮助我,我很感激。我将下载 HTML5 视频播放器并尝试此代码。在这之间我尝试了以下代码。所以现在我可以看到播放按钮是红色的,这意味着我的控制/光标在那个视频上但是当我尝试点击它时没有播放视频。 WebElement location= driver.findElement(By.xpath(xPath));//获取成员区xpath Actions builder = new Actions(driver); builder.moveToElement(location).build(); //builder.contextClick(); builder.contextClick().perform();等待时间(10000);