问题标签 [playwright-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

playwright - 在 Playwright 中,如何修复错误 locator.evaluateAll: Evaluation failed: ReferenceError: _test is not defined?

我刚开始接触 Playwright,所以我不知道我是否缺少一些东西。我没有任何其他测试框架连接到它。我正在使用@playwright/test v1.14.1.

本次测试:

正在产生以下错误:

如果我删除对 的调用expect,则测试通过,但console.log仍然不会触发。

0 投票
1 回答
572 浏览

playwright - globalSetup 从 playwright.config 引用 baseUrl

我目前使用 global-setup.ts 文件通过 playwright 加载 url。

await page.goto('https://test1.com/');

我也在里面做额外的代码并存储我的对象的状态(一切都按预期工作)

我的 playwright.config.ts 文件引用了 globalsetup,这一切都按预期工作。

在我的配置文件中,我还设置了 baseUrl,但是,我正在努力将 baseUrl 传递给我的 global-setup.ts 文件,而不是对其进行硬编码。

谢谢!

0 投票
2 回答
437 浏览

javascript - 我怎样才能让剧作家听消息事件

我有一个通过 postMessage 命令进行通信的网站

使用剧作家时,我正在尝试做一个“on message”处理程序

控制台输出

我不能把我的期望放在page.evaluate()代码中,因为它是在它注入的 javascript 标记的上下文中执行的,而不是在规范的上下文中。

0 投票
0 回答
178 浏览

pytest - Playwright-pytest - 测试的持久上下文 - 如何为每个测试创建一个新选项卡

我想知道是否有人可以提供帮助?

我目前正在为我的 UI 测试自动化使用 playwright-pytest。

在旧版本中,您可以在比赛文件中设置持久上下文,例如:

当 playwright-pytest 更新时,您现在被迫使用 scope="function" 这似乎为每个新测试加载一个新浏览器,而之前它加载了一次浏览器。如果将范围更改回会话,则会出现以下错误:

ScopeMismatch:您尝试使用“会话”范围的请求对象访问“函数”范围的夹具“browser_context_args”,涉及工厂

有没有一种方法可以让我使用函数范围只加载一次浏览器并为测试类中的每个测试创建一个新选项卡?

我的一个测试类的一个例子如下:

任何帮助将不胜感激,因为与范围为会话时相比,我的测试现在运行得如此缓慢。

0 投票
1 回答
118 浏览

playwright - 剧作家不显示警报消息

我的应用程序在提交请求后触发警报通知,我想使用 playwright 在通知中捕获警报消息。我已经尝试了以下方法,但仍然无法正常工作,我们将不胜感激:

我的应用程序:捕获的警报如下所示

警报消息如下所示

警报消息是一个 sl-alert,如此处所示

我尝试了以下代码,但它不起作用:

0 投票
1 回答
118 浏览

typescript - 考虑扩展 BeforeAll 以便处理登录

我们正在使用 playwright 编写集成测试。正在尝试做的一件事是在实际测试本身中最小化代码并在幕后做更多的事情。

为了进一步解释这一点,如果我们正在为特定页面编写集成测试,我们希望甚至在开始编写测试之前就将应用程序的状态设置为该页面。我们已经建立了我们的页面对象模型来实现这一点。

目前,我们正在尝试实现一种设计,即使在执行第一个 BeforeAll 之前,我们也将登录到应用程序。我们正在考虑以这样的方式实现它 -

我们期望上面的代码块做的是在后台使用提供的用户名登录应用程序,然后在 BeforeAll 块中运行代码。

但是,我发现剧作家没有提供扩展 beforeAll 的方法。您能否提出可能的解决方案?

我知道 globalSetup 和 StorageState 方法,但这发生在全局范围内。因此,如果我在整个测试执行期间使用 5 个不同的用户,我将需要同时登录并存储所有用户的状态。当我对只使用两个用户感兴趣时,这可能会影响性能,因为它仍然会在执行开始时为所有五个用户登录。

我也想过扩展页面夹具并在那里实现登录逻辑,但我不相信我们可以将参数(在本例中为用户名)传递给 base.extend() 函数。

感谢您阅读这篇文章并感谢您的回复。

0 投票
1 回答
256 浏览

playwright - 使用 JS 的编剧

我面临剧作家配置的问题。测试场景放在项目目录下,但在执行期间它显示没有找到测试

  1. npm i -D @playwright/test
  2. npx 剧作家安装
  3. 执行:npx 编剧测试附上截图
0 投票
1 回答
264 浏览

playwright - 剧作家 SelectOption 没有选择一个值

当尝试将 page.SelectOption 与 Playwright 一起使用时,我遇到了一个问题,即我选择的值没有被选择,我是否使用索引、值或标签来尝试选择都没关系。

我知道选择器正在被发现,因为当我使用跟踪查看器进行调试时,我看不到该步骤显示: 在此处输入图像描述

但是在选择框上它不会改变并且表现得好像它没有选择任何东西。

在此处输入图像描述

使用的代码: await page.selectOption('#select', "2");

0 投票
1 回答
103 浏览

javascript - 如何使用 Playwright 在 monaco 编辑器中插入代码?

我是Playwright的新手,我正在尝试测试包含 monaco 编辑器的功能,但在Playwright文档和论坛中找不到任何相关内容。

这是我的测试:

请帮忙!

0 投票
1 回答
129 浏览

protractor - 相当于量角器的 browser.executeScript 的剧作家

我在量角器中有这样的东西。

browser.executeScript('window.monaco.editor.getModel(monaco.Uri.parse("")).setValue( ' + someJavaScriptCode + ')', );

你能帮我用相当于上述代码的剧作家来替换摩纳哥编辑器的内容吗?