首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自动化测试 puppeteer API详解(一):puppeteer模块API

在环境搭建章节介绍了如何使用puppeteer模块来启动Chromium实例,本篇开始puppeteer的API详细学习计划 本文将主要介绍: puppeteer模块API ▷1◁ ?...[Object]> 为每个页面设置一个默认视口大小。默认是 800x600。如果为 null 的话就禁用视图口。 width 页面宽度像素。...isMobile 是否在页面中设置了 meta viewport 标签。默认是 false。 hasTouch 指定viewport是否支持触摸事件。...[Object]> 为每个页面设置一个默认视口大小。默认是 800x600。如果为 null 的话就禁用视图口。 width 页面宽度像素。...isMobile 是否在页面中设置了 meta viewport 标签。默认是 false。 hasTouch 指定viewport是否支持触摸事件。

3.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SVG与foreignObject元素

    foreignObject>元素允许在SVG文档中嵌入HTML、XML或其他非SVG命名空间的内容,也就是说我们可以直接在SVG中嵌入HTML,借助HTML的能力来展示我们的元素,例如上边的这个例子,我们就可以将其改造为如下的形式...如果碰到安装问题,也可以node node_modules/puppeteer/install.js进行重试,此外还有一些字体的问题,因为是在后端将文本渲染出来的,就需要服务器本身安装一些中文字体,例如思源...那么在我们将环境搭建好了之后,后续就是要将SVG渲染并且转换为Buffer了,这个工作实际上比较简单,只需要在我们的Headless Chromium中将SVG渲染出来,并且将ViewPort截图即可,...const puppeteer = require('puppeteer'); // 实际上可以维护单实例的`browser`对象 const browser = await puppeteer.launch...$('svg'); let buffer: Buffer | null = null; if(element){ const box = await element.boundingBox();

    55360

    基于 Vue 和 TS 的 Web 移动端项目实战心得

    mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...不过有两点需要注意: 一个是这个插件需要依赖 Puppeteer,而因为国内网络原因以及本身体积较大,经常下载失败,不过可以通过 .npmrc 文件指定 Puppeteer 的下载路径为国内镜像; 另一个是需要设置路由模式为...其中 setRules 方法是将组件中设置的 rules(符合 async-validator 约定的校验规则)按照需要校验的数据的名字为 key 转化一个对象 validator,value 是 async-validator...一般弹出组件是不会在路由栈上添加任何记录,因此我们在弹出组件时,可以在路由栈中 push 一个记录,为了不让页面跳转,我们可以把跳转的目标路由设置为当前页面路由,并加上一个 query 来标记这个组件弹出的状态...解决办法:全局监听 input 失焦事件,当触发事件后,将 body 的 scrollTop 设置为 0。

    3.4K21

    移动 web 最佳实践(干货长文)

    mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...不过有两点需要注意: 一个是这个插件需要依赖 Puppeteer,而因为国内网络原因以及本身体积较大,经常下载失败,不过可以通过 .npmrc 文件指定 Puppeteer 的下载路径为国内镜像; 另一个是需要设置路由模式为...其中 setRules 方法是将组件中设置的 rules(符合 async-validator 约定的校验规则)按照需要校验的数据的名字为 key 转化一个对象 validator,value 是 async-validator...一般弹出组件是不会在路由栈上添加任何记录,因此我们在弹出组件时,可以在路由栈中 push 一个记录,为了不让页面跳转,我们可以把跳转的目标路由设置为当前页面路由,并加上一个 query 来标记这个组件弹出的状态...解决办法:全局监听 input 失焦事件,当触发事件后,将 body 的 scrollTop 设置为 0。

    2.9K61

    移动 Web 最佳实践(干货长文,建议收藏)

    mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...不过有两点需要注意: 一个是这个插件需要依赖 Puppeteer,而因为国内网络原因以及本身体积较大,经常下载失败,不过可以通过 .npmrc 文件指定 Puppeteer 的下载路径为国内镜像; 另一个是需要设置路由模式为...其中 setRules 方法是将组件中设置的 rules(符合 async-validator 约定的校验规则)按照需要校验的数据的名字为 key 转化一个对象 validator,value 是 async-validator...一般弹出组件是不会在路由栈上添加任何记录,因此我们在弹出组件时,可以在路由栈中 push 一个记录,为了不让页面跳转,我们可以把跳转的目标路由设置为当前页面路由,并加上一个 query 来标记这个组件弹出的状态...解决办法:全局监听 input 失焦事件,当触发事件后,将 body 的 scrollTop 设置为 0。

    2.5K10

    把 puppeteer 融入调试流程,调试体验爽翻了!

    于是我在想,自动化测试工具 puppeteer 是可以通过脚本来自动执行浏览器操作的,能不能调试的时候让 puppeteer 帮我自动做了页面操作的一些流程呢?...比如这样一段脚本: const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch...跑下试试: 流程倒是对了,只是显示的不对,加个 viewport 的设置就好了: width、height 为 0 会自适应。 自动跑登录脚本成功了。...我们来试一下: puppeteer 启动 chrome 的时候,我指定了调试端口为 9999。...我们再改一下脚本: click 之后,又输入了密码,然后再 click: 断住的时候浏览器不会执行代码,这时候自动化脚本也就执行不了,可以专心根据调用栈作用域等调试代码,调试完之后,释放断点,自动化脚本才会继续执行

    1.1K20

    storybook插件说明: integrations与addons推荐

    docs插件文档viewport插件这个插件可以对tab页新增个选项,跟chrome里的切换不同设备有点像,使用这个功能,就可以把一个组件放入不同设备大小的story里。viewport插件文档。...background插件可以设置story的背景颜色之类,当然也有些简单方法可以不需要background插件就能设置背景。background插件文档。...另一个插件是storyshots-puppeteer,基于上面那个,pupeteer就有点像selenium一样开个虚拟浏览器去做测试。...storyshots插件文档puppeteer插件文档好用的社区插件官方插件就上面那些,有些社区插件写的也很不错,可以看看。...插件效果在线浏览插件文档地址storybook-addon-theme-playground 插件可以对每个story设置主题,有点像做好参数的knob。

    1K20

    Chrome 108 :发布新的 CSS 布局单位!

    width):1vw 等于视觉视口的 1% vh(Viewport's height) : 1vh 为视觉视口高度的 1% 另外还有两个相关的衍生单位: vmin : vw 和 vh 中的较小值 vmax...: 选取 vw 和 vh 中的较大值 如果我们将一个元素的宽度设置为 100vw 高度设置为 100vh,它将完全覆盖视觉视口: 这些单位有很好的浏览器兼容性,也在桌面端布局中得到了很好的应用。...视口大小可能会更改,但 vw 和 vh 的大小不会。因此,尺寸过大的 100vh 元素可能会从视口中溢出。 当网页向下滚动时,这些动态工具栏可能又会自动缩回。...新的视口也分配了单位: 代表 Large viewport 的单位以 lv 为前缀:lvw、lvh、lvi、lvb、lvmin、lvmax。...代表 Small Viewport 的单位以 sv 为前缀:svw、svh、svi、svb、svmin、svmax。 除非调整视口本身的大小,否则这些视口百分比单位的大小是固定的。

    1.6K20

    目前最全的R语言-图片的组合与拼接

    1.5 填充图片 关键函数: lay_set(layout) 将画布layout设置为绘图布局,用于base绘图对象 lay_grid(grobs, lay, ...)...() 展示分割的画布 pushViewport() 将新建的viewport推出去,即将工作区域切换到新的viewport popViewport() 将当前的viewport删除,其父viewport...作为新的工作区域, 子viewport中的绘制的图形不会被删除 downViewport() 导航到子viewport,并作为工作区域,原viewport不会删除 upViewport() 导航到父...viewport,父viewport变为工作区域, 原viewport不会被删除 seekViewport() 导航到name参数所在的viewport,并作为工作区域 grid.text() 输出文本标签..., "bottom")) # 新建一个viewport,起点为左下角, pushViewport(name = vp2) # 将工作区域设置到vp2 grid.rect(x = 0.1, y =

    5.5K41

    2016.06 第一周 群问题分享

    下图是百度移动端首页viewport的设置 ? 下图是天猫移动端首页viewport的设置 ? 下图是淘宝移动端首页viewport的设置(viewport缩放值是根据不同设备来进行设置) ?...下图是京东移动端首页viewport的设置 ?...所以,最好为页面里的每一张图片都指定尺寸,不管是在页面HTML里的标签,还是在CSS里(在img标签上设置宽高,会影响页面的扩展性,所以根据需求来进行设置)。...加了meta标签来禁止iPhone手机自动识别的功能,这样页面中里面的数字不会被识别,数字(数字被识别成电话号码)的颜色就不会改变了。这样的话我们要实现拨打电话的功能该怎么办呢?...而null表示的是有定义,定义的是一个空对象。 if语句中的状态 将undefined和null均作为if语句的条件时,我们会发现,两者均被转换成了布尔值false。

    86570

    基于 Vue 和 TS 的 Web 移动端项目实战心得

    mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...不过有两点需要注意: 一个是这个插件需要依赖 Puppeteer,而因为国内网络原因以及本身体积较大,经常下载失败,不过可以通过 .npmrc 文件指定 Puppeteer 的下载路径为国内镜像; 另一个是需要设置路由模式为...其中 setRules 方法是将组件中设置的 rules(符合 async-validator 约定的校验规则)按照需要校验的数据的名字为 key 转化一个对象 validator,value 是 async-validator...一般弹出组件是不会在路由栈上添加任何记录,因此我们在弹出组件时,可以在路由栈中 push 一个记录,为了不让页面跳转,我们可以把跳转的目标路由设置为当前页面路由,并加上一个 query 来标记这个组件弹出的状态...,同时不会返回上一个页面。

    2.3K10
    领券