javascript - 剧作家选择具有动态名称的帧

标签 javascript typescript dom e2e-testing playwright

我需要访问 playwright 中的 iframe,该 iframe 的名称是自动生成的。

iframe 的名称始终以“__privateStripeFrame”为前缀,然后是随机生成的数字

如何使用 page.frame({name: }) 访问框架?

从文档来看,我似乎无法使用正则表达式!

最佳答案

frameSelector 不需要通过名称指定。 尝试使用 xpathcontains - 这适用于 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()));

frames on w3c

(W3S 不是最好的演示站点,因为有很多嵌套框架 - 但这会输出具有名称的顶级框架)

输出:

iframeResult

__tcfapiLocator

__uspapiLocator

__tcfapiLocator

__uspapiLocator

关于javascript - 剧作家选择具有动态名称的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68764993/

相关文章:

javascript - jQuery 如果列表项包含 '' -".remove()?

node.js - 如何在 typescript 和 ts-jest 中调试测试?

javascript - JEST 错误 TypeError : specificMockImpl. apply is not a function

javascript - 独立于浏览器的方法来检测何时加载图像

javascript - 为我的 slider 实现导航点?

javascript - ESLint 偏好反射(reflect)错误

javascript - 仅加载某些页面元素时进行测量

javascript - 将键盘箭头导航添加到自定义js

javascript - 如何正确创建 Angular 域模型

PHP 节点不通过引用传递