puppeteer - 用户界面在 puppeteer 上似乎有所不同
问题描述
尽管我使用 puppeteer 进行端到端测试的大部分过程都可以正常工作(这是一系列相当简单的 page.select/type/waitfor/etc),但 UI 似乎有偏差。
当流程结束时,UI 会重新调整到它应该看起来的样子,但前提是一切都结束了。我尝试启动一个普通的 Chromium 实例,它看起来也应该如此。
测试代码看起来像这样
beforeAll(async () => {
browser = await puppeteer.launch(
{
headless: false,
slowMo: 250,
}
)
page = await browser.newPage()
await page.goto('http://localhost:3000/');
})
describe('on page load', () => {
test('MessageLists loads', async () => {
await page.waitForSelector('.MessageList', { timeout: 3000 })
await page.waitForSelector('.messageOuterContainer', { timeout: 10000 })
},
16000
);
test('Post Question', async () => {
await page.waitForSelector('.messageOuterContainer', { timeout: 10000 })
await page.focus('.input');
await page.keyboard.type('test');
await page.$('.AnswerList');
await page.screenshot({ path: 'screenshot1.png' });
}, 20000)
})
afterAll(() => {
// browser.close()
})
我在 MacOS Mojave 10.14 上,但我想这不是罪魁祸首。
解决方案
即使您在headless: false
模式下启动 puppeteer,页面也会以给定的视口运行。默认情况下,视口大小为800x600
. 如果您将窗口调整为更大的尺寸,它可能看起来确实像页面在 iframe 中运行。您不能通过调整浏览器窗口的大小来调整视口的大小。为此,您必须依赖函数。
代码示例
要更改默认视口,您可以在调用时添加一个参数puppeteer.launch
:
const browser = await puppeteer.launch({
defaultViewport: { // example: 1600x800
width: 1600,
height: 800
},
headless: false,
slowMo: 250,
})
您也可以通过调用函数来更改它page.setViewport
。
推荐阅读
- c - C - 传递对malloc函数指针的引用?
- c# - 如何使用文件结果在.net core web api中取消正在进行的下载?
- java - 如果我的 searchView 搜索视图中没有任何内容,则显示所有用途为空
- angular - 公共临时 url .Net Core API Angular
- r - 按组更改绘图的 x 轴值和背景颜色
- javascript - 将道具传递到屏幕没有出现拳头时间
- java - Android 过滤“mp3”文件
- databricks - 从 Python 中的 Databricks Filestore 下载 CSV 文件不起作用
- c# - 强制转换为 C# 中的两种类型之一
- python - 控制台关闭时的python执行函数