剧作家:保存 session 存储

标签 playwright

我对剧作家还很陌生。我正在尝试遵循此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']",

15 | ).click() | ^

超时是在我输入密码之前的步骤。 我正在使用以下命令运行测试:

yarn playwright test login-page-tests --headed

我做错了什么吗?

最佳答案

我不会指望这些谷歌登录类名称。您是否尝试运行类似的东西:

await page.locator('text="Next"').click()

关于剧作家:保存 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73868924/

相关文章:

typescript - 尝试使用剧作家上传文件时出现 ENOENT : no such file or directory,

javascript - 如何断言 HTML 元素是 Playwright 中的有效链接?

javascript - 如何使用 Playwright 打开新标签(例如单击按钮在新标签中打开新部分)

javascript - Playwright JavaScript - 如何在不同的测试中重用定位器变量?

puppeteer - 如果元素具有特定颜色,如何与 puppeteer 师或剧作家核对?

javascript - 如何在 Playwright 中使用已安装的 chrome 版本?

angular - Playwright - 如果我有多个同名下拉菜单,如何使用定位器访问 Angular 2 路绑定(bind)模型值?

python - 如何使用Playwright与Metamask交互?

node.js - 如何在 Playwright 中添加自定义标题

javascript - Xpath 函数在剧作家中不起作用