鱼C论坛

 找回密码
 立即注册
查看: 1620|回复: 3

[已解决]await在 playwright中的使用

[复制链接]
发表于 2023-3-30 20:44:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
expect(pageTitle).toBeVisible() is an asynchronous matcher like all the Playwright assertions: https://playwright.dev/docs/test-assertions
So you need to add an await statement before: await expect(menuItem).toHaveAttribute("aria-current", "page");


await 是 异步里的东西?通过前加 await , 可以把 await expect 语句用在同步接口中?
最佳答案
2023-3-31 01:53:13
在 Playwright 中,await 通常用于等待异步任务的完成,例如等待页面加载、等待元素出现等操作。

在使用 Playwright 的 API 时,有些函数是异步函数,需要加上 await 才能正确地获取返回值。

例如:

  1. # 创建一个浏览器实例
  2. browser = await playwright.chromium.launch()

  3. # 使用浏览器创建一个新的页面对象
  4. page = await browser.newPage()

  5. # 在页面中输入文本并点击按钮
  6. await page.fill('#search-input', 'Playwright')
  7. await page.click('#search-button')

  8. # 等待搜索结果出现并打印结果数
  9. await page.waitForSelector('.result-count')
  10. result_count = await page.innerText('.result-count')
  11. print(result_count)

  12. # 关闭浏览器
  13. await browser.close()
复制代码

在这个例子中,我们使用了 await 来确保在页面加载完毕后才进行后续的操作,以及在等待元素出现后才获取其文本内容。

注意,在使用 await 时需要将当前函数定义为 async 函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-30 20:46:40 | 显示全部楼层
await是一个关键字,它可以让你在异步函数中等待一个promise的结果,而不会阻塞后面的代码。

playwright是一个异步的库,它提供了很多返回promise的方法,比如page.click()或expect(pageTitle).toBeVisible()。

所以你需要在这些方法前面加上await,以便等待它们完成执行。

playwright还有一个特点是它会自动等待元素的可操作性,比如可见性、可点击性等,然后再执行相应的动作。

这样可以避免一些常见的错误,比如元素还没加载就点击或断言。

如果你想强制执行某些动作,你可以使用force选项来禁用一些非必要的可操作性检查。

如果你想使用CSS或XPath选择器来定位元素,你可以使用page.locator()方法来创建一个locator对象,

它可以接受一个选择器作为参数,并且可以自动检测选择器的类型。你可以在locator对象上调用一些方法,比如click()或toHaveAttribute()。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-31 01:53:13 | 显示全部楼层    本楼为最佳答案   
在 Playwright 中,await 通常用于等待异步任务的完成,例如等待页面加载、等待元素出现等操作。

在使用 Playwright 的 API 时,有些函数是异步函数,需要加上 await 才能正确地获取返回值。

例如:

  1. # 创建一个浏览器实例
  2. browser = await playwright.chromium.launch()

  3. # 使用浏览器创建一个新的页面对象
  4. page = await browser.newPage()

  5. # 在页面中输入文本并点击按钮
  6. await page.fill('#search-input', 'Playwright')
  7. await page.click('#search-button')

  8. # 等待搜索结果出现并打印结果数
  9. await page.waitForSelector('.result-count')
  10. result_count = await page.innerText('.result-count')
  11. print(result_count)

  12. # 关闭浏览器
  13. await browser.close()
复制代码

在这个例子中,我们使用了 await 来确保在页面加载完毕后才进行后续的操作,以及在等待元素出现后才获取其文本内容。

注意,在使用 await 时需要将当前函数定义为 async 函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-31 08:11:47 | 显示全部楼层
小甲鱼的二师兄 发表于 2023-3-31 01:53
在 Playwright 中,await 通常用于等待异步任务的完成,例如等待页面加载、等待元素出现等操作。

在使用 ...

用  from playwright.sync_api import Playwright, sync_playwright, expect  写的 程序,

是不是可以改成  from playwright.async_api import Playwright,然后在函数前加 await ,就变成异步了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 08:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表