我对剧作家还很陌生。我正在尝试遵循此https://playwright.dev/docs/auth#reuse-signed-in-state这样我就可以登录并保存 session 以进行进一步测试。
我的步骤在测试中运行良好,但是一旦我将它们移至 global-setup.ts,我就会超时:
import { chromium, FullConfig } from '@playwright/test'
async function globalSetup(config: FullConfig) {
const browser = await chromium.launch()
const page = await browser.newPage()
await page.goto('MYDOMAIN/login');
await page.locator("a[testid='googleSignIn']").click()
await page.locator("input[type='email']").fill('MYEMAIL')
await page.locator(
"button[class='VfPpkd-LgbsSe VfPpkd-LgbsSe-OWXEXe-k8QpJ VfPpkd-LgbsSe-OWXEXe-dgl2Hf nCP5yc AjY5Oe DuMIQc LQeN7 qIypjc TrZEUc lw1w4b']",
).click()
await page.locator("input[type='password']").fill('MYPASSWORD')
await page.locator(
"button[class='VfPpkd-LgbsSe VfPpkd-LgbsSe-OWXEXe-k8QpJ VfPpkd-LgbsSe-OWXEXe-dgl2Hf nCP5yc AjY5Oe DuMIQc LQeN7 qIypjc TrZEUc lw1w4b']",
).click()
// Save signed-in state to 'storageState.json'.
await page.context().storageState({ path: 'storageState.json' })
await browser.close()
}
export default globalSetup
上述步骤使我在测试中顺利进行,但现在我已将配置文件设置为使用保存的 session 存储:
storageState: 'storageState.json',
当我运行测试时,我没有看到浏览器出现,它只是等待一分钟,然后说:
locator.click: Timeout 30000ms exceeded. =========================== logs =========================== waiting for selector "button[class='VfPpkd-LgbsSe VfPpkd-LgbsSe-OWXEXe-k8QpJ VfPpkd-LgbsSe-OWXEXe-dgl2Hf nCP5yc AjY5Oe DuMIQc LQeN7 qIypjc TrZEUc lw1w4b']"
at ../../global-setup.ts:15
13 | await page.locator( 14 | "button[class='VfPpkd-LgbsSe VfPpkd-LgbsSe-OWXEXe-k8QpJ VfPpkd-LgbsSe-OWXEXe-dgl2Hf nCP5yc AjY5Oe DuMIQc LQeN7 qIypjc TrZEUc lw1w4b']",
block 引用>15 | ).click() | ^
超时是在我输入密码之前的步骤。 我正在使用以下命令运行测试:
yarn playwright test login-page-tests --headed
我做错了什么吗?
最佳答案
我不会指望这些谷歌登录类名称。您是否尝试运行类似的东西:
await page.locator('text="Next"').click()
关于剧作家:保存 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73868924/