软件测试|web自动化测试神器playwright教程(二十九)
前言
当我们打开有的网站,网站会请求权限,比如某些网站要进进行声音采集或者开启摄像头时,都会弹出一个权限请求框,如下图:
这种权限请求与alert弹框不同,并不是在页面上,所以selenium无法处理这种弹框,但是playwright却可以实现对这些权限请求弹框的处理。本文就给大家介绍一下playwright对这些权限弹框的处理。
grant_permissions()
playwright的context提供了grant_permissions()方法处理权限请求框,该方法可以给网站加权限,在源码中展示了能够添加权限的列表,源码如下:
def grant_permissions(
self, permissions: typing.List[str], *, origin: typing.Optional[str] = None
) -> None:
"""BrowserContext.grant_permissions
Grants specified permissions to the browser context. Only grants corresponding permissions to the given origin if
specified.
Parameters
----------
permissions : List[str]
A permission or an array of permissions to grant. Permissions can be one of the following values:
- `'geolocation'`
- `'midi'`
- `'midi-sysex'` (system-exclusive midi)
- `'notifications'`
- `'camera'`
- `'microphone'`
- `'background-sync'`
- `'ambient-light-sensor'`
- `'accelerometer'`
- `'gyroscope'`
- `'magnetometer'`
- `'accessibility-events'`
- `'clipboard-read'`
- `'clipboard-write'`
- `'payment-handler'`
origin : Union[str, None]
The [origin] to grant permissions to, e.g. "https://example.com".
"""
使用示例
我们以使用计算机的麦克风和摄像头功能为例,代码如下:
from playwright.sync_api import sync_playwright
with sync_playwright() as playwright:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
# 设置允许 'camera', 'microphone' 权限
context.grant_permissions(['camera', 'microphone'])
page = context.new_page()
page.goto('https://www.demo.com/demo.html')
运行脚本,我们即可实现为网站添加摄像头以及麦克风的权限。
总结
本文主要介绍了playwright对于需要添加权限的网站的处理,这是playwright相比于selenium的一大优势,因为selenium无法处理页面外的内容,所以无法处理权限的请求,但是playwright却可以实现该操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-08-07 测试面试题集锦(三)| 计算机网络和数据库篇(附答案)