当前位置: 首页 > 软件库 > 开发工具 > 测试工具 >

playwright-go

授权协议 MIT License
开发语言 JavaScript
所属分类 开发工具、 测试工具
软件类型 开源软件
地区 不详
投 递 者 危文乐
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

�� Playwright for

Feedback for future development of this project is needed, see here. Thanks!

PkgGoDevLicenseGo Report Card Build StatusJoin Slack Coverage Status Chromium version Firefox version WebKit version

API reference | Example recipes

Playwright is a Go library to automate Chromium, Firefox and WebKit with a single API. Playwright is built to enable cross-browser web automation that is ever-green, capable, reliable and fast.

Linux macOS Windows
Chromium 96.0.4660.0
WebKit 15.0
Firefox 92.0

Headless execution is supported for all the browsers on all platforms.

Installation

go get github.com/mxschmitt/playwright-go

Install the browsers and OS dependencies:

go run github.com/mxschmitt/playwright-go/cmd/playwright install --with-deps
# Or
go install github.com/mxschmitt/playwright-go/cmd/playwright
playwright install --with-deps

Capabilities

Playwright is built to automate the broad and growing set of web browser capabilities used by Single Page Apps and Progressive Web Apps.

  • Scenarios that span multiple page, domains and iframes
  • Auto-wait for elements to be ready before executing actions (like click, fill)
  • Intercept network activity for stubbing and mocking network requests
  • Emulate mobile devices, geolocation, permissions
  • Support for web components via shadow-piercing selectors
  • Native input events for mouse and keyboard
  • Upload and download files

Example

The following example crawls the current top voted items from Hacker News.

package main

import (
	"fmt"
	"log"

	"github.com/mxschmitt/playwright-go"
)

func main() {
	pw, err := playwright.Run()
	if err != nil {
		log.Fatalf("could not start playwright: %v", err)
	}
	browser, err := pw.Chromium.Launch()
	if err != nil {
		log.Fatalf("could not launch browser: %v", err)
	}
	page, err := browser.NewPage()
	if err != nil {
		log.Fatalf("could not create page: %v", err)
	}
	if _, err = page.Goto("https://news.ycombinator.com"); err != nil {
		log.Fatalf("could not goto: %v", err)
	}
	entries, err := page.QuerySelectorAll(".athing")
	if err != nil {
		log.Fatalf("could not get entries: %v", err)
	}
	for i, entry := range entries {
		titleElement, err := entry.QuerySelector("td.title > a")
		if err != nil {
			log.Fatalf("could not get title element: %v", err)
		}
		title, err := titleElement.TextContent()
		if err != nil {
			log.Fatalf("could not get text content: %v", err)
		}
		fmt.Printf("%d: %s\n", i+1, title)
	}
	if err = browser.Close(); err != nil {
		log.Fatalf("could not close browser: %v", err)
	}
	if err = pw.Stop(); err != nil {
		log.Fatalf("could not stop Playwright: %v", err)
	}
}

More examples

How does it work?

Playwright is a Node.js library which uses:

  • Chrome DevTools Protocol to communicate with Chromium
  • Patched Firefox to communicate with Firefox
  • Patched WebKit to communicate with WebKit

These patches are based on the original sources of the browsers and don't modify the browser behaviour so the browsers are basically the same (see here) as you see them in the wild. The support for different programming languages is based on exposing a RPC server in the Node.js land which can be used to allow other languages to use Playwright without implementing all the custom logic:

The bridge between Node.js and the other languages is basically a Node.js runtime combined with Playwright which gets shipped for each of these languages (around 50MB) and then communicates over stdio to send the relevant commands. This will also download the pre-compiled browsers.

Is Playwright for Go ready?

We are ready for your feedback, but we are still covering Playwright Go with the tests.

Resources

  • PlayWright简介 我是在知乎上看到这个项目的介绍的,比较好奇,就找资料看了一下,试着玩一玩。 Github地址:playwright-python 根据官方页面的介绍,PlayWright是一个“用于Chromium, Firefox 和WebKit浏览器(引擎?内核?)自动化的,提供统一API的python库”(翻译水平不行,大致是这么个意思)。 所以,PlayWright的优势在于

  • 前言 pytest-playwright插件完美的继承了pytest 用例框架和playwright基础使用的封装,基本能满足工作中的常规需求了,不需要我们再做额外的插件开发。 pytest-playwright 环境准备 Playwright 建议使用官方的 pytest-playwright 插件来编写端到端测试。它提供上下文隔离,开箱即用地在多个浏览器配置上运行。或者,您可以使用该库使用您喜

  • Playwright实现多端发帖 一直想做,但是抓包太麻烦了,刚好接触到这个工具,一想其实用途还挺多,可以自己录个多平台发文脚本。例如写篇文章,想同步在简书、zblog、hu60、v2ex等平台发布,这几个平台刚好都支持markdown。 那么我先根据路径读取md文件,以文件名为标题,文本为内容再执行各个发布方法,但在此之前,我们先获取登陆后的浏览器信息并保存吧 登陆脚本 登陆脚本一般一段时间只执

  • 一、官方文档 官方文档: https://playwright.dev/python/docs/intro 官方方法文档: https://playwright.dev/python/docs/api/class-playwright 二、安装 pip install playwright Install the Pytest plugin: pip install pytest-play

  • 介绍 Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。 项目地址:https://playwright.dev/docs/intro 我最喜欢的特点 浏览器上下文并行:对具有浏览器上下文的多个并行、隔离的执行环境,重用单个浏览器实例。 自动等待: Playwright

  •         (1)安装Playwright依赖库(Playwright支持Async\Await语法,故需要Python3.7+) pip install playwright        (2)安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器) python -m playwright install       (3)录屏,自动生成代码 python -m

 相关资料
  • Playwright 是一个 Node.js 库,可使用单个 API 自动化 Chromium、Firefox 和 WebKit。Playwright 的建立是为了实现跨浏览器的网络自动化。 Playwright 是为自动化单页应用和渐进式 Web 应用所使用的广泛和不断增长的 Web 浏览器功能而建立的。 跨越多个页面、域和 iframe 的场景 在执行操作(如单击、填充)之前自动等待元素准备就

  • Playwright for .NET �� Linux macOS Windows Chromium 94.0.4595.0 ✅ ✅ ✅ WebKit 15.0 ✅ ✅ ✅ Firefox 91.0 ✅ ✅ ✅ Playwright for .NET is the official language port of Playwright, the library to automate Chro

  • playwright-aws-lambda Support for Playwright running on AWS Lambda and Google Cloud Functions. NOTE: Currently only Chromium is supported. Install npm install playwright-core playwright-aws-lambda --s

  • 我想在向url发送请求时添加假用户代理。但它并没有添加假useragent,而是使用默认的useragent。

  • 使用微软的剧作家,我有这个测试代码,工作: 我想把它分解成一个页面对象。我把它作为我的页面对象 作为我的测试: 但我明白了 这是为什么呢? 注意:如果需要的话,在节点16中使用本地es模块

  • 我目前正在使用playright/Python/Pytest,我正在尝试将用户登录作为特定类型的用户角色,然后检查各种按钮是否可见或隐藏。 我正在使用页面对象,并为每个按钮元素设置了属性,即。 然后我使用一个验证方法的可见按钮: 这可以很好地工作,并将测试中的断言传递回true。 然后,我尝试使用以下方法对隐藏值执行相同操作: 但是我得到了这个错误——等待选择器“xpath=//h3[normal