使用Playwright端到端测试获取search按钮文本时innerText返回undefined如何解决
Playwright调用innerText返回undefined问题修复
错误原因
- 执行时机错误:在HomePage构造函数中调用
page.innerText()时,还未执行页面跳转逻辑,目标页面未加载,对应元素不存在,无法取到文本值。 - 语法错误:选择器字符串缺少开头的单引号,原代码写为
page.innerText(.RoundButton__root .RoundButton__root--blue'),.前缺失',属于语法错误。 - 选择器逻辑错误:两个类名之间加了空格,代表查找
.RoundButton__root的后代元素中带有.RoundButton__root--blue类的元素,如果两个类都作用在搜索按钮本身,需要去掉空格,否则无法匹配到对应元素。 - 返回值缺失:
getSearchButtonText方法仅执行了await操作,未返回取值结果,所以调用后拿到的是默认的undefined。
修复后代码
homePage.js
const { expect } = require('@playwright/test'); exports.HomePage = class HomePage { constructor(page) { this.page = page; // 构造函数仅存储元素定位器,不提前执行取值操作 this.searchButton = page.locator('.RoundButton__root.RoundButton__root--blue'); } async goto() { await this.page.goto('https://www.localsearch.com.au/'); } async getSearchButtonText() { // 页面加载完成后再调用innerText取值,同时返回结果 return await this.searchButton.innerText(); } }
home.js
原有测试代码无需修改,执行后即可正常打印搜索按钮的文本内容。
内容的提问来源于stack exchange,提问作者soccerway
相关产品推荐
相关产品推荐

