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)
你有什么想法吗?
当您在元素上调用
evaluate
时,第一个参数是元素本身,第二个参数是您作为参数传递的对象。您的代码应如下所示:
iframe.locator('canvas').evaluate(
(canvas, { longitude, latitude }) => {
},
{ longitude, latitude });