问题标签 [playwright-java]

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 投票
0 回答
69 浏览

playwright - 如何获取会话 ID?

在 Selenium for Java 中,我可以调用RemoteWebDriver.getSessionId()以获取与浏览器会话关联的 GUID。

如何在 Playwright 中获取会话 ID?

我查看了任何看似相关的对象(BrowserPageContext等)的成员,并且进行了搜索,但找不到任何东西。

也许没有会话 ID,但我觉得肯定有,因为我们的自动化浏览器主机将 Playwright 浏览器会话与 GUID 相关联,就像它对 Selenium 浏览器会话所做的那样。

0 投票
1 回答
118 浏览

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

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

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

警报消息如下所示

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

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

0 投票
0 回答
133 浏览

json - 用java编写如何使用waitforresponse或onresponse捕获响应

我有一个 API 接收多个响应(一次一个)并在 UI 上呈现的场景。API 不断轮询数据库,直到完成接收所有响应。我需要我的脚本等到 API 响应“完成”。我尝试下面的代码来捕获响应正文。它给出了一些随机数,但没有给出实际响应。下面是代码片段。

并收到回复。[123, 34, 116, 114,]

0 投票
0 回答
86 浏览

playwright - Playwright 元素未附加到 DOM 问题

我有一个剧作家的问题,当我循环让我们说一个 tbody 或类似的东西然后改变页面做一些事情并回到原来的页面我得到这个错误

我不知道如何在不更改所有代码的情况下解决此问题

源码:https ://github.com/AIGLEZMA/mmsp-simulator 网址:https ://simulation.mmsp.gov.ma/salaire/pages/home.mmsp?localeCode=fr

基本上,我遍历所有“类别”、“军团”、“干部”、“等级”、“Indice-Échelon”,然后单击“Suivant”(下一个)获取我想要的数据并单击上一个按钮,但它没有没有完成那些“Indice Échelon”的循环,有什么建议吗?

0 投票
1 回答
130 浏览

playwright - 如何获取 CSS ::after 选择器的定位器?

我有以下元素(为简洁起见):

渲染到这个元素:

在此处输入图像描述

我现在想单击下拉箭头。

如何为此编写选择器?

0 投票
2 回答
77 浏览

java - 定位器和页面对象模型

我想在我的页面对象中使用 Playwright 的定位器。我找到了一个Javascript 示例(为简洁起见):

尝试在我的 Java 代码中做同样的事情:

初始化时抛出空指针异常,因为page尚未启动loginButton

我可以

但这对于大页面对象类来说会变得有点冗长/混乱。

关于如何在 Java 中做到这一点的任何想法?

谢谢!

0 投票
1 回答
20 浏览

java - page.waitForFunction()的Java剧作家用法

我试图弄清楚如何page.waitForFunction()在 Java 中使用 Playwright 。

我希望 apage.evaluate()先运行,然后page.waitForFunction()等待它,然后再继续。

我有以下内容: page.waitForFunction(() => page.evaluate("document.readyState").equals("complete"));

但在语法上这是不正确的,或者我做错了什么。

0 投票
1 回答
26 浏览

java - 剧作家如何在导航和登录后从页面获得响应

我在看剧作家,我想回复我看过的例子,有以下片段

但是我想做的是在第一页登录,这是一个登录页面,它将返回主页,而那个页面,我想返回响应,所以我有以下代码

有没有办法导航到页面登录并返回成功的已登录页面

0 投票
0 回答
53 浏览

heap-memory - Java Playwright 抛出 java.lang.OutOfMemoryError: Java heap space closing a Playwright Object

我是剧作家的新人。我开发了一个简单的代码,它有 2 个线程,每个线程都有自己的 Playwright 对象以及 Browser 对象 + Page 对象。我正在使用 Java 的 1.18 Playwright 版本。

当调用关闭挂钩时,我将尝试以下列方式关闭在每个线程上创建的资源。

  1. 关闭页面对象
  2. 关闭浏览器对象
  3. 关闭剧作家对象

喜欢

当我只用一个 Playwright 对象运行代码时,它就像一种魅力。

作品

但是当创建两个或多个 Playwrights 对象时,就会发生异常。

抛出异常

如您所见,当两个 playwright 对象为 close() 时会发生异常。

如上所述,我为每个线程创建一个 Playwright 对象。

我分析了 hprof 文件,我看到了这样的东西。

.hprof 文件

堆栈跟踪

内存分析器

使用 Java 8。

当使用 20G 的 ram 内存运行进程时,2 页对象会挂起进程,正如您在此处看到的那样,挂起需要 10 多分钟,我尝试甚至更长时间甚至 2 或 3 个小时并继续挂起。 挂起

使用标志-XX:+PrintGCDetails运行时,我可以看到 GC分配失败

GC(分配失败)实际上是什么意思?GC 分配失败意味着垃圾收集器无法足够快地将对象从年轻一代移动到老一代,因为它在老一代中没有足够的内存。这可能会导致应用程序运行缓慢。

但是 20 GB 内存还不够吗?

gc_memory.log GC-Memory_LOG 在这里你可以看到我正在使用 20GB 堆

使用 35 GB 堆,它会挂起超过 130 分钟,并依靠 Browser->shutdown 方法。 您可以看到日志时间与系统时间

130 试图关闭浏览器

gc_memory_logs

当我使用System.exit(0) 5 playwrights 关闭 intellijIdea 时,我不知道为什么使用 CMD 会遇到很多麻烦-Xmx5g

5 个剧作家对象在 intellij 顺利关闭

甚至10个。 在此处输入图像描述