从 Puppeteer browser/page 上下文中提取本机界面
Extract native interface from Puppeteer browser/page context
是否可以从 Browser 或 Page 实例检索本机界面以检查对象是否是 instanceof
此界面?
例如,在一个有趣的测试上下文中(由于某些原因 CanvasRenderingContext2D 不可用,因为它是一个节点上下文而不是 JSDOM 或浏览器 API 的其他模拟):
it("should create an instance of CanvasRenderingContext2D", async () => {
expect.assertions(1);
const context = await page.evaluate(() => {
return document.createElement("canvas").getContext("2d");
});
// Could a JSHandle be used somehow?
const CanvasRenderingContext2DInterface = await page.evaluateHandle(() => CanvasRenderingContext2D);
expect(context).toBeInstanceOf(CanvasRenderingContext2DInterface);
});
应直接在 Puppeteer browser/page 中评估实例检查,否则执行上下文不同。
it("should create an instance of CanvasRenderingContext2D", async () => {
expect.assertions(1);
const isInstanceOfCanvasRenderingContext2D = await page.evaluate(
() =>
document.createElement("canvas").getContext("2d") instanceof CanvasRenderingContext2D
);
expect(isInstanceOfCanvasRenderingContext2D).toBeTruthy();
});
是否可以从 Browser 或 Page 实例检索本机界面以检查对象是否是 instanceof
此界面?
例如,在一个有趣的测试上下文中(由于某些原因 CanvasRenderingContext2D 不可用,因为它是一个节点上下文而不是 JSDOM 或浏览器 API 的其他模拟):
it("should create an instance of CanvasRenderingContext2D", async () => {
expect.assertions(1);
const context = await page.evaluate(() => {
return document.createElement("canvas").getContext("2d");
});
// Could a JSHandle be used somehow?
const CanvasRenderingContext2DInterface = await page.evaluateHandle(() => CanvasRenderingContext2D);
expect(context).toBeInstanceOf(CanvasRenderingContext2DInterface);
});
应直接在 Puppeteer browser/page 中评估实例检查,否则执行上下文不同。
it("should create an instance of CanvasRenderingContext2D", async () => {
expect.assertions(1);
const isInstanceOfCanvasRenderingContext2D = await page.evaluate(
() =>
document.createElement("canvas").getContext("2d") instanceof CanvasRenderingContext2D
);
expect(isInstanceOfCanvasRenderingContext2D).toBeTruthy();
});