如何使用 Playwright 滚动到特定的浏览器版本?
How do I roll to a specific browser version with Playwright?
我需要 运行 在不同的 Chromium 版本中使用 Playwright 进行一些测试。我有不同版本的不同 Chromium 文件夹,但我不知道如何使用 CLI 从一个版本切换到另一个版本以 运行 我的测试。一些帮助?谢谢:)
您可以在启动浏览器时使用 executablePath
参数以使用自定义可执行文件。参见 here. Note, that this only works with Chromium based browsers, see here。
const playwright = require('playwright');
(async () => {
const browser = await playwright.chromium.launch({
executablePath: '/your/custom/chromium',
headless: false, // to see the browser
slowMo: 4000 // to slow it down
});
// example for edge on msft windows
// executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',
const page = await browser.newPage();
await page.goto('http://whatsmyuseragent.org/');
await page.screenshot({ path: `example.png` });
await browser.close();
})();
此外,Playwright 仅针对最新的稳定版本进行测试,因此其他 Chromium 版本可能会出现问题。请参阅版本下的 here。
Max Schmitt 是对的:不保证库可以与非捆绑的 Chromium 一起使用。无论如何,您可以在 executablePath
中尝试使用多个基于 Chromium 的浏览器。由于它没有内置在 Playwright 测试中,您需要自己实现它。
注意:这样你就失去了剧作家测试的一些简单性。
在我的示例中,我使用 Jest 作为测试运行程序,因此需要 yarn add --dev jest
。最后一个 CLI 参数 - 为浏览器版本保留 - 可以在 Node 中使用 process.argv.slice(-1)[0]
检索,这样你可以告诉你的测试你想使用什么浏览器版本。在这里它们将是 edge
、chrome
,默认是捆绑的 chromium
。
MS 边缘(铬)
yarn test chrome.test.js edge
Chrome
yarn test chrome.test.js chrome
Chromium(默认 - 与 Playwright 捆绑在一起)(但任何字符串,或者缺少此参数也会将其作为默认值启动)
yarn test chrome.test.js chromium_default
chrome.test.js
(具有 Windows-特定的可执行路径)
const playwright = require('playwright')
let browser
let page
beforeAll(async function () {
let chromeExecutablePath
switch (process.argv.slice(-1)[0]) {
case 'chrome':
chromeExecutablePath = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
break
case 'edge':
chromeExecutablePath = 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
break
default:
chromeExecutablePath = ''
}
browser = await playwright.chromium.launch({
headless: false,
executablePath: chromeExecutablePath
})
page = await browser.newPage()
})
describe('Google Search', function () {
test('should respond with HTTP 200 - OK', async function () {
const response = await page.goto('https://google.com')
const responseCode = response.status()
expect(responseCode).toBe(200)
})
afterAll(async function () {
await browser.close()
})
})
我需要 运行 在不同的 Chromium 版本中使用 Playwright 进行一些测试。我有不同版本的不同 Chromium 文件夹,但我不知道如何使用 CLI 从一个版本切换到另一个版本以 运行 我的测试。一些帮助?谢谢:)
您可以在启动浏览器时使用 executablePath
参数以使用自定义可执行文件。参见 here. Note, that this only works with Chromium based browsers, see here。
const playwright = require('playwright');
(async () => {
const browser = await playwright.chromium.launch({
executablePath: '/your/custom/chromium',
headless: false, // to see the browser
slowMo: 4000 // to slow it down
});
// example for edge on msft windows
// executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',
const page = await browser.newPage();
await page.goto('http://whatsmyuseragent.org/');
await page.screenshot({ path: `example.png` });
await browser.close();
})();
此外,Playwright 仅针对最新的稳定版本进行测试,因此其他 Chromium 版本可能会出现问题。请参阅版本下的 here。
Max Schmitt 是对的:不保证库可以与非捆绑的 Chromium 一起使用。无论如何,您可以在 executablePath
中尝试使用多个基于 Chromium 的浏览器。由于它没有内置在 Playwright 测试中,您需要自己实现它。
注意:这样你就失去了剧作家测试的一些简单性。
在我的示例中,我使用 Jest 作为测试运行程序,因此需要 yarn add --dev jest
。最后一个 CLI 参数 - 为浏览器版本保留 - 可以在 Node 中使用 process.argv.slice(-1)[0]
检索,这样你可以告诉你的测试你想使用什么浏览器版本。在这里它们将是 edge
、chrome
,默认是捆绑的 chromium
。
MS 边缘(铬)
yarn test chrome.test.js edge
Chrome
yarn test chrome.test.js chrome
Chromium(默认 - 与 Playwright 捆绑在一起)(但任何字符串,或者缺少此参数也会将其作为默认值启动)
yarn test chrome.test.js chromium_default
chrome.test.js
(具有 Windows-特定的可执行路径)
const playwright = require('playwright')
let browser
let page
beforeAll(async function () {
let chromeExecutablePath
switch (process.argv.slice(-1)[0]) {
case 'chrome':
chromeExecutablePath = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
break
case 'edge':
chromeExecutablePath = 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
break
default:
chromeExecutablePath = ''
}
browser = await playwright.chromium.launch({
headless: false,
executablePath: chromeExecutablePath
})
page = await browser.newPage()
})
describe('Google Search', function () {
test('should respond with HTTP 200 - OK', async function () {
const response = await page.goto('https://google.com')
const responseCode = response.status()
expect(responseCode).toBe(200)
})
afterAll(async function () {
await browser.close()
})
})