【发布时间】:2022-06-17 19:38:57
【问题描述】:
我尝试使用会话进行一次性身份验证,并将其用于规范文件中的所有测试。 在尝试运行我的测试时,有时我会收到以下错误,我无法理解或修复。对此的任何帮助将不胜感激。
browser.newContext: Cookie 应该有一个有效的过期时间,只允许 -1 或正数的 unix 时间戳(以秒为单位)
at C:\Users\v.shivarama.krishnan\source\repos\PlaywrightDemo\node_modules\@playwright\test\lib\index.js:595:23
at Object.context [as fn] (C:\Users\v.shivarama.krishnan\source\repos\PlaywrightDemo\node_modules\@playwright\test\lib\index.js:642:15)
规格.ts
import { chromium, test, expect } from "@playwright/test";
test.describe('Launch Browser', () => {
await context.storageState({ path: 'storage/admin.json' });
await page.goto('abc.com');
await expect(page.locator('#ebiLink')).toBeVisible();
const texts = await page.locator('#ebiLink').textContent();
console.log("text of ebi is " + texts);
await page.goto('abc.com');
await expect(page.locator('text= Detailed Interfaces ')).toBeVisible();
await page.waitForSelector('#searchTab');
await page.waitForSelector('#InterfaceCard');
await page.locator('#searchTab').type('VISHW-I7939');
await page.locator("button[type='button']").click();
await page.locator('#InterfaceCard').first().click();
await expect(page.locator('#ngb-nav-0')).toBeVisible();
const interfaceID = await page.locator("//span[@class='value-text']").first().allInnerTexts();
console.log('interface id is' + interfaceID);
const dp = await page.waitForSelector('role=listbox');
await page.locator('role=listbox').click();
const listcount = await page.locator('role=option').count();
await page.locator('role=option').nth(1).click();
await expect(page.locator('#ngb-nav-0')).toBeVisible();
});
test('Move to shells screen', async ({ page, context }) => {
await context.storageState({ path: 'storage/admin.json' });
await page.goto('abc.com');
await expect(page.locator('#ListHeader')).toBeVisible();
const shells = await page.locator('#ListHeader').textContent();
console.log('Text of shells header is '+shells);
});
});
global-setup.ts(用于一次性登录并获取会话)
import { Browser, chromium, FullConfig } from '@playwright/test'
async function globalSetup(config: FullConfig) {
const browser = await chromium.launch({
headless: false
});
await saveStorage(browser, 'Admin', 'User', 'storage/admin.json')
await browser.close()
}
async function saveStorage(browser: Browser, firstName: string, lastName: string, saveStoragePath: string) {
const page = await browser.newPage()
await page.goto('abc.com');
await page.waitForSelector("//input[@type='email']", { state: 'visible' });
await page.locator("//input[@type='email']").type('ABC@com');
await page.locator("//input[@type='submit']").click();
await page.locator("//input[@type='password']").type('(&^%');
await page.locator("//input[@type='submit']").click();
await page.locator('#idSIButton9').click();
await page.context().storageState({ path: saveStoragePath })
}
export default globalSetup
【问题讨论】:
-
请选择一个能真实描述您的问题的标题。
标签: ui-automation playwright end-to-end playwright-test