Playwright 源码 BrowserType

news/2024/11/15 11:26:56/文章来源:https://www.cnblogs.com/huajianketang/p/18399732

playwright-java 的 Browser、BrowserContext、Page 挺好理解的,唯独这厮,就有一丢丢 ……

package com.microsoft.playwright;/*** BrowserType provides methods to launch a specific browser instance or connect to an existing one. ** BrowserType 提供启动一个特定浏览器或连接到一个已存在浏览器的方法。*/
public interface BrowserType {// 启动浏览器 返回浏览器实例Browser launch(LaunchOptions options);// 通过 Chrome DevTools Protocol 连接已存在的浏览器 Browser connectOverCDP(String endpointURL, ConnectOverCDPOptions options);// 返回浏览器名 例如 chromium webkit firefoxString name();// 返回可执行的浏览器路径String executablePath();// ...}

调试以下代码,可看出:

BrowserType 不是简单直译地表示浏览器类型,而是表示带有浏览器类型和浏览器可执行路径,用来启动或连接已启动浏览器的类。

package demo;
import com.microsoft.playwright.*;import java.util.Arrays;
import java.util.List;public class Demo {public static void main(String[] args) {try(Playwright playwright = Playwright.create()) {// 三个 BrowserTypeList<BrowserType> browserTypes = Arrays.asList(playwright.chromium(),playwright.webkit(),playwright.firefox());BrowserType.LaunchOptions launchOptions = new BrowserType.LaunchOptions().setHeadless(false);// 遍历for (BrowserType browserType : browserTypes) {// 启动浏览器try (Browser browser = browserType.launch(launchOptions)) {BrowserContext context = browser.newContext();Page page = context.newPage();page.navigate("https://localhost/");}}}}
}

好了,那上图的 initializer 从何而来?又要到哪里去?

一条重要的线索,渐渐浮出水面 ……

翻过这座山,越过那片海;给下面的方法都加断点,相信,上下而求索的你,终将找到真相 ……

  • com.microsoft.playwright.impl.PlaywrightImpl#createImpl
  • com.microsoft.playwright.impl.ReaderThread#run
  • com.microsoft.playwright.impl.ChannelOwner#runUntil
  • com.microsoft.playwright.impl.Connection#processOneMessage
  • com.microsoft.playwright.impl.Connection#createRemoteObject
  • com.microsoft.playwright.impl.PlaywrightImpl#PlaywrightImpl

Huajianketang would climb every mountain, and swim every ocean, just to find you.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792928.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【优技教育】Oracle 19c OCP 082题库(第14题)- 2024年修正版

【优技教育】Oracle 19c OCP 082题库(Q 14题)- 2024年修正版 考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为(CUUG 原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。 原文地址:http://www.cuug.com.cn/ocp/082kaoshitiku/3818373495…

安装了跑神经网络的环境,所遇到的问题及解惑1

cuda:12.2 cudnn:8.9.7 tensorflow库:2.17.0(python310_test) {9:37}/home/code/python ➭ python mnist_test.py 2024-09-06 09:39:29.473128: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to registe…

记一次阿里云搭建K8S在恢复镜像快照之后etcd一个节点无法启动问题

环境查看 系统环境# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) # uname -a Linux CentOS7K8SMaster01005101 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux软件环境 # kubectl version Client Vers…

无风扇嵌入式工控机的技术优势

无风扇嵌入式工控机专为优先考虑低维护和可靠性的应用而设计。这些工控机是不间断性能至关重要的行业的完美选择,因为它们消除了与风扇相关的故障风险。通过消除对风扇的需求,无风扇工控机提供了无缝且可靠的性能,不会受到潜在风扇故障或故障的影响。此外,无风扇嵌入式工控…

哎呀,当时怎么没有想到

在我们的测试工作中,是不是经常遇到这样的情形,发生了线上问题,产品、研发或者测试同学一拍脑袋:当时怎么没有想到,怎么给漏掉了呢?明明是一个非常简单的事情,用大拇指都能想到的验证场景,为何当时就漏测了呢?但实际情况是,逃逸到线上的缺陷,疑难杂症式的极端异常的…

Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来,Optuna不断发展,现已成为机器学习领域的重要工具。其用户社区持续壮大,目前已达到以下里程碑:10,000+ GitHub星标 每月300万+ 下载量 16,000+ 代码库使用 5,000+ 论文引用 18,000+ …

揭秘如何通过淘宝API接口高效获取商品数据

https://img2024.cnblogs.com/blog/3506472/202409/3506472-20240906095413951-921785923.png在电子商务的世界里,数据就是力量。对于淘宝卖家来说,掌握店铺商品的全面数据是优化运营策略、提升销售业绩的关键。淘宝API,作为连接淘宝平台与外部应用的桥梁,提供了一键获取店…

常用协议

常用协议和报文解读常用协议 默认网关 实现不同网络之间的路由转发ARP 地址解析协议,根据IP地址获取MAC地址,还能检测地址是否有重复 广播ARP报文寻找目标IP的MAC地址主机1通过发送ARP Request报文获取主机2的MAC地址 ​ 由于不知道目的MAC地址,因此ARP Request报文內目的MA…

测试博客园_network

1. 一级标题新建文件 添加type属性,及值 基于tpye的值创建模板 更新属性 更新网络版试试

IPv6协议——互联网通信协议第六版

引言IPv6是互联网升级演进的必然趋势、网络技术创新的重要方向、网络强国建设的基础支撑。近些年,随着我国大力推动IPv6规模部署和应用,目前中国的IPv6渗透率已超过70%。 对于车载以太网来说,目前IPv4是车载IP通信的主流协议,但随着车辆的智能化、网联化程度不断提高,IPv6…

KUnit

基本介绍 KUnit Suite Memory每一个kUnit都有自己的上下文,所以一个崩溃了,不会影响到其他的suit。 开关 目前可以有下面几种方法控制case测试。 menuconfig控制 使用.kunitconfig控制编译的测试文件 使用宏选择性开启某些case 使用debugfs kunit_get_current_test 总开关 CO…

Python批量采集某东评论,实现可视化分析

女朋友没事就喜欢网购,买一大堆又不用,总说不合适,为了不让她花冤枉钱,于是我决定用Python写一个采集商品评论的脚本,然后对商品进行分析,这样就不怕踩到坑了! 让我们直接开始本次操作准备工作 环境安装Python 3.10 Pycharm 模块使用采集数据模块 -DrissionPage ->…