javascript - 从 Puppeteer 浏览器/页面上下文中提取本机界面
问题描述
是否可以从 Browser 或 Page 实例检索本机接口以检查对象是否是instanceof
this 接口?
例如,在一个开玩笑的测试上下文中(由于某些原因 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 浏览器/页面中进行评估,否则执行上下文不同。
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();
});
推荐阅读
- c++ - 转换为字符串的 ANSI 转义序列不适用于视觉工作室
- python - 分页器在 django 中不起作用
- stm32 - STM32 PWM 输出定时器(计数器设置)的计算公式
- r - 用于下载所有数据或仅可见数据的按钮扩展
- ios - 在 UITableView 中的 UINib 中重新加载 UITableView
- excel - 有条件地将信息从 Excel 表复制到另一个工作表
- c# - 错误:调用服务元数据组件时发生未知错误。无法生成服务参考
- concurrency - fortran 77中连续字符的长度,带有移交字符*(*)
- listview - 如何在 xamarin 表单的嵌套列表视图中添加 2 个列表
- javascript - NodeJS / Javascript在不同数组中查找具有相同属性的对象