代码之家  ›  专栏  ›  技术社区  ›  Miller90

在控制台中通过测试时出错

  •  0
  • Miller90  · 技术社区  · 1 年前

    在mac上的Playwright中运行此测试:

     import {chromium, test} from "@playwright/test"
    
     test("login test demo", async() => {
    
        const browser = await  chromium.launch({
           headless: false
        });
        
       const context = await browser.newContext();
       const page = await context.newPage(); 
       
       (await page).goto ("https://ecommerce-playground.lambdatest.io");
      (await page).hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]");
       (await page).click("text=Login")
    
       
    
    
     })
    

    在我的控制台中导致此错误:

    tests/login.test.ts:3:6 › login test demo
    
       at tests/login.test.ts:11
    
       9 |    const page = await context.newPage(); 
      10 |    
    > 11 |    (await page).goto ("https://ecommerce-playground.lambdatest.io");
         |                 ^
      12 |   (await page).hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]");
      13 |    (await page).click("text=Login")
      14 |
    
        at /Users/dwayne/Documents/Development/Learn-Playwright /tests/login.test.ts:11:17
    
      1 passed (2.4s)
      1 error was not a part of any test, see above for details
    Dwaynes-MacBook-Pro:Learn-Playwright  dwayne$ 
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   ggorlen Hoàng Huy Khánh    1 年前

    没有必要在测试中创建浏览器。使用预先构建的 page 。如果你想跑得很快,使用 npx playwright test --headed 或者在配置中设置。

    不要在你的 await 调用,并避免XPath。

     import {expect, test} from "@playwright/test"
    
    test("login test demo", async ({page}) => {
      await page.goto("https://ecommerce-playground.lambdatest.io");
      await page.getByRole("link", {name: "My account"})
        .evaluate(el => el.click());
      await expect(page).toHaveURL(/\/index\.php\?route=account\/login$/);
      await page.getByLabel("E-Mail Address").fill("user");
      await page.getByLabel("Password").fill("1234");
      await page.keyboard.press("Tab");
      await page.keyboard.press("Tab");
      await page.keyboard.press("Enter");
      await expect(page.getByText("Warning:")).toBeVisible();
    });
    

    在实际测试中,您可能希望避免不受信任的点击,但由于可见性的原因,受信任的单击在这里不起作用,因此我们不得不后退。

    推荐文章