如何在 iframe 内使用 playwright 运行 TypeScript 函数?

问题描述 投票:0回答:1
const iframeElement = await page.locator('#bucketFrame');
    const iframe = await iframeElement.contentFrame();
    expect(iframe).not.toBeNull();
  
const pixelPosition = await iframe.evaluate(({ longitude, latitude }) => {
    const viewer = window['viewer']; 
    
    const cartesian = Cesium.Cartesian3.fromDegrees(longitude, latitude);
    

    const scene = viewer.scene;
    const windowPosition = scene.camera.worldToScreen(cartesian);

if (windowPosition) {
    return {
      x: windowPosition.x,
      y: windowPosition.y,
    };
  }
  return null;
}, { longitude, latitude });

我的评估功能有问题:

类型“FrameLocator”上不存在属性“evaluate”

当我尝试这个时:

const pixelPosition = await iframe.locator('canvas').evaluate(({ longitude, latitude }) => {

我在经度和纬度上收到一个新错误:

类型“SVGElement |”上不存在属性“经度” HTMLElement'.ts(2339)

你有什么想法吗?

typescript iframe playwright playwright-typescript
1个回答
0
投票

当您在元素上调用

evaluate
时,第一个参数是元素本身,第二个参数是您作为参数传递的对象。您的代码应如下所示:

iframe.locator('canvas').evaluate(
(canvas, { longitude, latitude }) => {
},
{ longitude, latitude });
© www.soinside.com 2019 - 2024. All rights reserved.