我有一个包含许多项目的测试配置文件(playwright.config.ts)。
通常,我想测试几种不同的浏览器。
但是,当我构建测试时,我只想使用单个浏览器/项目进行测试(因为在我处理测试时测试将会失败)。
我尝试了这个命令:
npx playwright test test.ts --browser='chromium'
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
错误:配置文件定义项目时无法使用 --browser 选项。请在项目中指定 browserName。
如何“在项目中指定 browserName”以限制测试在一个浏览器上运行?
我的配置文件:
const config: PlaywrightTestConfig = {
projects: [
{
name: 'Chrome Stable',
use: {
browserName: 'chromium',
channel: 'chrome',
},
},
{
name: 'Safari MacBook Air',
use: {
browserName: 'webkit',
viewport: {
width: 2560,
height: 1620,
},
},
},
{
name: 'Firefox Desktop',
use: {
browserName: 'firefox',
viewport: {
width: 1920,
height: 1080,
},
},
},
{
name: 'iPhone 6/7/8',
use: devices['iPhone 8'], …Run Code Online (Sandbox Code Playgroud) npx playwright codegen https:/// page.goto: net::ERR_CERT_AUTHORITY_INVALID 位于 ...
如何通过 codegen 命令传递输入参数或身份验证凭据来打开 https url
我一直在尝试学习剧作家,在实现过程中,我尝试编写一个测试用例,通过名称查找输入元素并用一些值填充它
不幸的是,该元素只有类和名称属性。我一直在尝试找到一种阅读它的方法,但没有在文档中找到任何内容,或者我可能错过了
请帮忙
给出以下标记:
<label for="name">Name</label>
<input type="text" id="name" />
Run Code Online (Sandbox Code Playgroud)
我想在剧作家测试中填写输入值。但是,我更喜欢遵循类似于测试库的范例,它像真实用户一样使用选择器(通常是可见的文本内容)。因此,我希望我的剧作家选择器使用标签文本。
当我尝试以下操作时,我收到错误element is not an <input>,因为它选择了实际的标签元素:
await page.fill('"Name"')
还有其他方法可以实现这一目标吗?
注意:我不热衷于使用 Playwright 测试库包,因为它还不够成熟。另外,我的理解是 Puppeteer 和 Playwright 实际上是相同的,因此为什么这个问题适用于这两个框架。
// foo.ts
import { test as base } from "@playwright/test";
const test = base.extend<{foo: string}>({
foo: "hello"
});
export { test };
Run Code Online (Sandbox Code Playgroud)
// bar.ts
import { test as base } from "@playwright/test";
const test = base.extend<{bar: string}>({
bar: "bye"
});
export { test };
Run Code Online (Sandbox Code Playgroud)
// index.ts
import { test } from /* BOTH_FOO_AND_BAR??? */;
test("Basic test", async ({ foo, bar }) => { // <-- I want to be able to use both foo and bar fixture here
console.log(foo);
console.log(bar); …Run Code Online (Sandbox Code Playgroud) 我想使用自动浏览器并使用 jupyter 笔记本单元而不是使用 .py 脚本执行我的步骤。这与名为 selenium 的浏览器自动化库配合得很好。
它不适用于名为 Playwright 的库。事实上它根本不起作用。我尝试了他们在手册中提供的每一行代码。jupyter 笔记本上什么都不起作用。只要将相同的代码复制粘贴到某个 .py 文件中并执行它,一切都可以在我的机器上正常运行。我正在谈论的各种示例可以在这里找到: https: //playwright.dev/python/docs/intro
我真的不明白为什么我无法让它在 jupyter 笔记本中工作,特别是如果它在几乎每个 .py 文件中都能正常工作的话。
编辑:显然它可以在 Mac 上运行,但我使用 Windows
我正在尝试等待一个具有两个可能的 id 之一的 div,div#abc或者div#efg.
div#abc我可以这样等待:
await this.page.waitForSelector('div#abc');
Run Code Online (Sandbox Code Playgroud)
但我如何告诉 Playwright 我也希望该步骤通过(如果div#efg存在)?
我正在尝试在浏览器中记录网络调用。对于我的用例,我要求浏览器处于打开状态,并且只能使用脚本关闭。我目前正在使用 page.pause() 函数来防止浏览器自动关闭。有没有其他方法可以防止浏览器自动关闭。
test('Verify home page Load event',async({page})=>{
//const browser = await chromium.launchPersistentContext("",{headless:false});
await page.goto("https://samplesite.com")
await page.on('request',req=>{
const requestUrl = req.url();
if(requestUrl.indexOf("google-analytics.com/collect")>-1){
console.log("Intercepted:->"+requestUrl);
}else{
req.continue
}
})
await page.pause();
Run Code Online (Sandbox Code Playgroud)
})
我尝试检查Python的[链接](How to keep browser opening by the end of the code running with playwright-python?),但无法将其应用于JS。
我在最大化 Python 中启动 Playwright 时遇到问题。我找到了一些其他语言的文章,但在Python中不起作用,官方文档中也没有写关于Python中最大化窗口的内容。
我试过browser = p.chromium.launch(headless=False, args=["--start-maximized"])
它开始最大化,但随后自动恢复到默认的小窗口大小。
有任何想法吗?谢谢
我试图确保在每个运行的测试中,我不必登录到我正在测试的平台。为了实现这一目标,我正在实施“重用状态”和“重用身份验证”。但是,Firebase 使用 indexedDB 而不是 Cookie 或 SessionStorage。StorageState 此处不持久保存 indexedDB。也许你知道这个问题的解决方案?
全局设置.ts:
import { Browser, chromium, expect, Page } from "@playwright/test";
async function globalSetup(){
const browser = await chromium.launch({headless: false});
const context = await browser.newContext();
const page: Page = await context.newPage();
await page.goto("<'url'>")
await page.getByLabel('Email').fill('<'email'>');
await page.getByLabel('Password').fill('<'password'>');
await page.getByRole('button', { name: 'Sign in' }).click();
await expect (page.getByRole('link', { name: 'logo' })).toBeVisible({ timeout: 30000 });
//save state
await page.context().storageState({ path: "./LoginAuth.json" });
await browser.close();
}
export default globalSetup;
Run Code Online (Sandbox Code Playgroud)
有用的链接:
https://playwright.dev/docs/auth#reuse-authentication-in-playwright-test https://github.com/microsoft/playwright/issues/11164
playwright ×10
python ×2
typescript ×2
automation ×1
firebase ×1
javascript ×1
node.js ×1
puppeteer ×1
python-3.x ×1
testing ×1
webdriver ×1