【问题标题】:How to play a video inside an iframe using selenium with node.js?如何使用 selenium 和 node.js 在 iframe 中播放视频?
【发布时间】:2022-01-06 17:16:32
【问题描述】:

我正在尝试使用 selenium 和 node.js 在 <iframe> 中播放视频。我试过了

`driver.sleep("2000");
await driver.switchTo().frame(0);
let playVideo = By.id("shakaVid");
// await driver.switchTo().frame(driver.findElement(playVideo));
await driver.wait(until.elementLocated(playVideo), 15*1000);
await driver.findElement(playVideo).play();`

我收到TimeoutError: Waiting for element to be located By(css selector, *[id="shakaVid"]) 我也尝试过By.css("iframe html > body > video"),但这些都不起作用。而且我不知道如何测试 selenium 正在将其重点转移到 iframe 上。所以,我尝试了多种方法。

这就是我的 html 的样子:

【问题讨论】:

    标签: javascript html selenium iframe


    【解决方案1】:

    看起来那不是第一帧,尝试为 iframe 提供网页元素而不是索引:

    let iframe = By.cssSelector("iframe[name^='vdoFrame'][src*='playerAssets']");
    await driver.switchTo().frame(driver.findElement(iframe));
    

    如果这个 css 选择器 iframe[id^='vdoFrame'][src*='playerAssets'] 正在定位正确的 iframe(请在我们检查时在元素部分验证),那么您应该能够切换到 iframe,并且您的其余代码应该可以正常工作。

    【讨论】:

    • 你能告诉我打开元素后如何检查iframe[id^='vdoFrame'][src*='playerAssets']对应的iframe吗?
    • 如果我们在HTML DOM 中有唯一 条目,请检查dev tools (Google chrome)。 检查步骤: Press F12 in Chrome -> 转到 element 部分 -> 做一个 CTRL + F -> 然后粘贴 css selector 看看,如果你想要的 element 得到 突出显示1/1匹配节点。
    • 另外,你能解释一下代码是什么意思吗? P.s:我试过发现只有一个 iframe。
    • 您正在寻找基于索引的 iframe,这不是一种稳定的方式,所以我建议使用 iframe 网页元素而不是索引。
    • 是的。现在它找到了 iframe。让我运行整个代码。
    猜你喜欢
    • 2013-03-31
    • 2016-10-06
    • 2021-11-20
    • 2013-07-11
    • 2014-01-22
    • 1970-01-01
    • 2018-08-21
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多