首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剧作家- Javascript - Page对象- TypeError: page.$(.).toBeVisible不是函数

剧作家- Javascript - Page对象- TypeError: page.$(.).toBeVisible不是函数
EN

Stack Overflow用户
提问于 2022-10-27 15:08:07
回答 2查看 60关注 0票数 0

早上好。我面临的下一个问题是:

TypeError:页面。$(.).toBeVisible不是函数

问题中的一行-> await expect(await page.$(homeIcon()).toBeVisible())

这是登录页面。is:

代码语言:javascript
复制
const {expect} = require("@playwright/test");
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
const pageTitle = async () => await page.$('//h2[contains(text(),\'My Profile\')]')
const homeIcon =  async () => await page.$('//body/div[@id=\'__next\']/div[1]/div[1]/div[2]/div[1]')
const HomeTitle = async () => await page.$('//h2[contains(text(),\'Pre-Owned Activation\')]')

class LoginPage {

    
    async navigateToHomePage(){
        await page.goto('http://XX.XXX.XXX.51/')
        await delay(2000)
    }

    async verifyHeaderIconHome(){
        await expect(await page.$(homeIcon()).toBeVisible())
    }
async verifyTitle(){
        await expect(page.$(HomeTitle)).toBeVisible()
    }
}

module.exports = { LoginPage };

下面是我的登录-步骤is

代码语言:javascript
复制
const { Given, When, Then } = require('@cucumber/cucumber');
const { LoginPage } = require('../page-objects/login-page')
const loginPage = new LoginPage()


Given('I navigate to the page', async function () {
    await loginPage.navigateToHomePage()

});
When('I can see the header icon Home', async function () {
    await loginPage.verifyHeaderIconHome()

});
Then('I am logged in the Onstar page', async function () {
    await loginPage.verifyTitle()
});

顺便说一下,这是我的package.json:

代码语言:javascript
复制
{
  "name": "example-playwright",
  "version": "1.0.0",
  "description": "E2E Automation Framework",
  "main": "index.js",
  "scripts": {
    "allure:generate": "npx allure generate ./allure-results --clean",
    "allure:open": "npx allure open ./allure-report",
    "allure:serve": "npx allure serve",
    "test": "./node_modules/.bin/cucumber-js --require cucumber.js --require step-definitions/**/*.js --require features/**/*.js",
    "posttest": "npm run allure:generate",
    "allure": "allure serve reports/allure-results"
  },
  "author": "RGM",
  "license": "ISC",
  "dependencies": {
    "@cucumber/cucumber": "^8.7.0",
    "chai": "^4.3.6",
    "prettier": "^2.7.1"
  },
  "jest": {
    "verbose": true,
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "preset": "ts-jest/presets/js-with-ts",
    "testEnvironment": "node",
    "allowJs": true,
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    },
    "transformIgnorePatterns": [
      "<rootDir>/node_modules/(?!variables/.*)"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.19.6",
    "@babel/preset-env": "^7.19.4",
    "@playwright/test": "^1.27.1",
    "@testing-library/jest-dom": "^5.16.5",
    "allure-commandline": "^2.18.1",
    "babel-jest": "^29.2.2",
    "experimental-allure-playwright": "^0.0.3",
    "jest": "^29.2.2",
    "playwright": "^1.27.1"
  }
}

阿诺德能帮我吗?提前谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-10-30 18:02:58

在expect文档中,我没有看到任何toBeVisible函数。

https://github.com/playwright-community/expect-playwright

也许你想试试这个:https://playwright.dev/docs/test-assertions

但是您需要导入不同的lib:

代码语言:javascript
复制
import {expect, jest, test} from '@jest/globals';

如您所见:https://jestjs.io/docs/expect

票数 0
EN

Stack Overflow用户

发布于 2022-10-31 21:38:36

请尝试.isVisible()

代码语言:javascript
复制
const homeIcon= '//body/div[@id=\'__next\']/div[1]/div[1]/div[2]/div[1]'
const homeIconEH = await this.page.$(homeIcon) //element handle
await expect(await homeIconEH.isVisible())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74224299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档