我需要访问 playwright 中的 iframe,该 iframe 的名称是自动生成的。
iframe 的名称始终以“__privateStripeFrame”为前缀,然后是随机生成的数字
如何使用 page.frame({name: }) 访问框架?
从文档来看,我似乎无法使用正则表达式!
最佳答案
frameSelector
不需要通过名称指定。
尝试使用 xpath
和 contains
- 这适用于 W3 示例页面:
await page.goto('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe');
await page.frame("//iframe[contains(@title,'W3s')]");
如果您想要更通用的方法 - 您还可以使用page.frames()
。
这将返回一个帧数组,您可以迭代并找到您需要的帧。
这对我有用:
let myFrames = page.frames();
console.log("#frames: " + myFrames.length)
myFrames.map((f) => console.log(f.name()));
(W3S 不是最好的演示站点,因为有很多嵌套框架 - 但这会输出具有名称的顶级框架)
输出:
iframeResult
__tcfapiLocator
__uspapiLocator
__tcfapiLocator
__uspapiLocator
关于javascript - 剧作家选择具有动态名称的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68764993/