所以我有这个测试用例,我打开一个youtube链接,用youtube视频打开一个框架(嵌入式)
我想用Selenium播放/暂停视频。我得到一个关于没有这样的元素的错误。一切都在我没有youtube视频的地方有效。 这是代码:
public void PlayMovies()
{
driver.FindElement(By.CssSelector("span.movie"), TimeoutToFindElement).Click();
driver.FindElement(By.CssSelector("li > a.youtubevideo"), TimeoutToFindElement).Click();
driver.SwitchTo().ActiveElement();
//driver.FindElement(By.ClassName(".ytp-play-button"), TimeoutToFindElement).Click();
//driver.FindElement(By.XPath("//div[2]/div/button"), TimeoutToFindElement).Click();
//driver.FindElement(By.XPath("//*[starts-with(@id,'player_uid')]/div[22]/div[2]/div[1]/button"), TimeoutToFindElement);
//driver.FindElement(By.CssSelector("button.ytp-play-button.ytp-button"), TimeoutToFindElement).Click();
driver.FindElement(By.XPath("//div[@id='youtube-modal-container']/div/div/button"), TimeoutToFindElement).Click();
}
这些注释行都没有起作用。另外我不知道SwitchTo是否有一些效果,因为我得到了相同的错误或没有。
答案 0 :(得分:1)
可能是,您的视频位于iFrame
所以首先您需要切换到iFrame
-
driver.switchTo().frame(0); // 0 represent frame index
然后必须模拟你的行动