Playwright获取元素文本存变量并打印:解决异步函数输出异常
问题解决:Playwright获取元素文本返回
[AsyncFunction: innerText] 你的问题出在对Playwright Locator的innerText使用方式上——它不是直接读取的属性,而是异步方法,必须调用它并加上await才能拿到实际文本内容。
修正后的代码
import { test, expect } from '@playwright/test'; test('test', async ({ page }) => { await page.goto('https://www.exploretock.com/whisperingvine4thstreet/'); await expect(page.getByText('guests')).toBeVisible(); // page.getByText返回Locator对象,不需要await const guestsLocator = page.getByText('guests'); // 调用innerText()方法并await,获取实际文本内容 const text = await guestsLocator.innerText(); console.log(text); // 现在会输出预期的'2 guests' // 如果你需要提取文本里的数字(用于后续操作),可以用正则处理: const guestCount = parseInt(text.match(/\d+/)?.[0] || '0', 10); console.log('客人数量:', guestCount); // 输出数字2 });
关键修改点
- 去掉
page.getByText('guests')前的await:page.getByText()返回的是定位元素用的Locator对象,不是Promise,不需要等待。 - 把
guests.innerText改成await guests.innerText():innerText()是异步函数,直接访问会拿到函数本身的引用(也就是你看到的[AsyncFunction: innerText]),必须用await等待它执行完成才能拿到文本结果。
更简洁的写法
如果不需要单独保存Locator,可以直接合并成一行:
const text = await page.getByText('guests').innerText();
内容的提问来源于stack exchange,提问作者kylewhirl
相关产品推荐
相关产品推荐

