【Python3】自动化测试_用Playwright操作浏览器

时间:2024-07-15 08:35:43

创建浏览器实例

# 启动浏览器实例
myBrowser = myPlaywright.chromium.launch(headless=False)
# myBrowser = myPlaywright.firefox.launch(headless=False)
# myBrowser = myPlaywright.webkit.launch(headless=False)

        args < List [ str ] >传递给浏览器实例的附加参数。

        channel < str >浏览器分发渠道。支持的值为“chrome”、“chrome-beta”、“chrome-dev”、“chrome-canary”、“msedge”、“msedge-beta”、“msedge-dev”、“msedge-canary”。阅读有关使用Google Chrome 和 Microsoft Edge的更多信息。

        chromium_sandbox < bool >启用 Chromium 沙盒。默认为false.

        devtools < bool > Chromium-only是否为每个选项卡自动打开开发者工具面板。如果这个选项是,该选项将被设置。

        downloads_path < Union [ str , pathlib.Path ] >如果指定,则将接受的下载下载到此目录中。否则,会在浏览器关闭时创建并删除临时目录。在任何一种情况下,当创建它们的浏览器上下文关闭时,下载都会被删除。

        env <字典[ str , str | 浮动| bool ] >指定对浏览器可见的环境变量。默认为process.env.

        executable_path < Union [ str , pathlib.Path ] >要运行的浏览器可执行文件的路径,而不是捆绑的。如果executable_path是相对路径,则相对于当前工作目录进行解析。请注意,Playwright 仅适用于捆绑的 Chromium、Firefox 或 WebKit,使用风险自负。

        firefox_user_prefs <字典[ str , str | 浮动| bool ] > Firefox 用户首选项。在 中了解有关 Firefox 用户首选项的更多信息about:config。

        handle_sighup < bool >在 SIGHUP 上关闭浏览器进程。默认为true.

        handle_sigint < bool >按Ctrl-C 关闭浏览器进程。默认为true.

        handle_sigterm < bool >在 SIGTERM 上关闭浏览器进程。默认为true.

        headless < bool >是否以无头模式运行浏览器。Chromium和Firefox的更多详细信息。默认为true除非devtools选项是true.

        ignore_default_args <布尔| List [ str ] >如果true,Playwright 不传递自己的配置参数,而只使用来自args. 如果给定一个数组,则过滤掉给定的默认参数。危险的选择;小心使用。默认为false.

        proxy <字典>网络代理设置。

                server < str >用于所有请求的代理。支持 HTTP 和 SOCKS 代理,例如http://myproxy.com:3128或socks5://myproxy.com:3128. 短格式myproxy.com:3128被视为 HTTP 代理。

                bypass < str >可选的以逗号分隔的域以绕过代理,例如".com, chromium.org, .domain.com".

                username < str > HTTP 代理需要身份验证时使用的可选用户名。

                password < str > HTTP 代理需要身份验证时使用的可选密码。

        slow_mo < float >将 Playwright 操作减慢指定的毫秒数。有用,以便您可以看到发生了什么。

        timeout < float >等待浏览器实例启动的最长时间(毫秒)。默认为30000(30 秒)。通过0禁用超时。

        traces_dir < Union [ str , pathlib.Path ] >如果指定,则将跟踪保存到此目录中。#

获取浏览器实例类型

        <BrowserType>获取浏览器所属的浏览器类型(chromium、firefox 或 webkit)。

# 获取浏览器所属的浏览器类型
print(myBrowser.browser_type)

获取浏览器实例状态

# 获取浏览器实例状态,True表示连接,False表示已关闭
print(myBrowser.is_connected())

关闭浏览器

        类似于强制退出浏览器。关闭浏览器及其所有页面,并清除属于此浏览器的所有已创建上下文并断开与浏览器服务器的连接,Browser对象本身被视为已释放,不能再使用。

# 关闭浏览器实例
myBrowser.close()

创建浏览器上下文

        创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookie/缓存。

# 创建新的浏览器上下文( 独立上下文环境,其运行资源是隔离的,保证互不干扰 )
myBrowserContext = myBrowser.new_context(viewport={"width":1920,"height":1080})

        accept_downloads:< bool >是否自动下载所有附件。默认为true接受所有下载的位置。

        base_url:< str >当使用page.goto(url, **kwargs) , page.route(url, handler, **kwargs) , page.wait_for_url(url, **kwargs) , page.expect_request(url_or_predicate, **kwargs) , 或page.expect_response(url_or_predicate, **kwargs)URL()它通过使用构造函数构建相应的 URL 来考虑基本URL。示例:

                baseURL: http://localhost:3000并导航到/bar.html结果http://localhost:3000/bar.html

                baseURL: http://localhost:3000/foo/并导航到./bar.html结果http://localhost:3000/foo/bar.html

                baseURL:http://localhost:3000/foo不带斜杠,并导航到./bar.html结果http://localhost:3000/bar.html

        bypass_csp:< bool >切换绕过页面的 Content-Security-Policy。

        color_scheme:< "light"|"dark"|"no-preference" >模拟'prefers-colors-scheme'媒体功能,支持的值为'light', 'dark', 'no-preference'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'light'.

        device_scale_factor:< float >指定设备比例因子(可以认为是dpr)。默认为1.

        extra_http_headers:< Dict [ str , str ] >包含要随每个请求一起发送的附加 HTTP 标头的对象。

        forced_colors:< "active"|"none" >模拟'forced-colors'媒体功能,支持的值为'active', 'none'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'none'.

        geolocation:<字典>

                latitude < float > -90 到 90 之间的纬度。

                longitude < float > -180 到 180 之间的经度。

                accuracy < float >非负精度值。默认为0.

        has_touch:< bool >指定视口是否支持触摸事件。默认为假。

        http_credentials:<字典> HTTP 身份验证的凭据。

                username < str >

                password < str >

        ignore_https_errors:< bool >发送网络请求时是否忽略 HTTPS 错误。默认为false.

        is_mobile:< bool >是否考虑meta viewport标签并启用触摸事件。默认为false. Firefox 不支持。

        java_script_enabled:< bool >是否在上下文中启用 JavaScript。默认为true.

        locale:< str >指定用户区域设置,例如en-GB,de-DE等。区域设置会影响navigator.language值、Accept-Language请求头值以及数字和日期格式规则。

        no_viewport:< bool >不强制固定视口,允许在头部模式下调整窗口大小。

        offline:< bool >是否模拟网络离线。默认为false.

        permissions:< List [ str ] >授予此上下文中所有页面的权限列表。有关详细信息,请参阅browser_context.grant_permissions(permissions, **kwargs)。

        proxy:< Dict >与此上下文一起使用的网络代理设置        。

                server < str >用于所有请求的代理。支持 HTTP 和 SOCKS 代理,例如http://myproxy.com:3128或socks5://myproxy.com:3128. 短格式myproxy.com:3128被视为 HTTP 代理。

                bypass < str >可选的以逗号分隔的域以绕过代理,例如".com, chromium.org, .domain.com".

                username < str > HTTP 代理需要身份验证时使用的可选用户名。

                password < str > HTTP 代理需要身份验证时使用的可选密码。

对于 Windows 上的 Chromium,需要使用全局代理启动浏览器才能使此选项起作用。如果所有上下文都覆盖代理,则永远不会使用全局代理,并且可以是任何字符串,例如launch({ proxy: { server: 'http://per-context' } }).

        record_har_content:< "omit"|"embed"|"attach" >控制资源内容管理的可选设置。如果omit指定,内容不会被持久化。如果attach指定,资源将作为单独的文件保存,并且所有这些文件都与 HAR 文件一起存档。默认为embed,它根据 HAR 规范将内容存储在 HAR 文件中。

        record_har_mode:< "full"|"minimal" >当设置为 时minimal,仅记录从 HAR 路由所需的信息。这省略了从 HAR 重放时未使用的大小、时间、页面、cookie、安全性和其他类型的 HAR 信息。默认为full.

        record_har_omit_content:< bool >控制是否从 HAR 中省略请求内容的可选设置。默认为false.

        record_har_path:< Union [ str , pathlib.Path ] >将所有页面的HAR记录到文件系统上的指定HAR文件中。如果未指定,则不记录 HAR。确保调用browser_context.close()以保存 HAR。

        record_har_url_filter:<字符串| 图案>

        record_video_dir:< Union [ str , pathlib.Path ] >将所有页面的视频录制到指定目录中。如果未指定,则不会录制视频。确保调用browser_context.close()来保存视频。

        record_video_size:<字典>录制视频的尺寸。如果未指定,大小将等于viewport缩小以适应 800x800。如果viewport未明确配置,则视频大小默认为 800x450。如有必要,每页的实际图片将按比例缩小以适合指定尺寸。#

                width < int >视频帧宽度。

                height < int >视频帧高度。

        reduced_motion:< "reduce"|"no-preference" >模拟'prefers-reduced-motion'媒体功能,支持的值为'reduce', 'no-preference'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'no-preference'. #

        screen:< Dict >模拟通过window.screen. 仅在viewport设置 时使用。#

                width < int >页面宽度(以像素为单位)。

                height < int >页面高度(以像素为单位)。

        service_workers:< "allow"|"block" >是否允许站点注册 Service Worker。默认为'allow'. #

                'allow': Service Worker可以注册。

                'block': Playwright 将阻止所有 Service Worker 的注册。

        storage_state:<联合[ str , pathlib.Path ] | Dict >使用给定的存储状态填充上下文。此选项可用于使用通过browser_context.storage_state(**kwargs)获得的登录信息初始化上下文。保存存储的文件的路径,或具有以下字段的字典:#

  • cookies: <List[Dict]>
    • sameSite <"Strict"|"Lax"|"None">
    • secure: <bool>
    • httpOnly: <bool>
    • expires: < float > Unix 时间,以秒为单位。
    • path: < str >
    • domain: < str >
    • value: < str >
    • name: < str >
  • origins <List[Dict]>
    • origin < str >
    • localStorage <List[Dict]>
    • name < str >
    • value < str >

        strict_selectors:< bool >如果指定,则为此上下文启用严格选择器模式。在严格选择器模式下,当多个元素与选择器匹配时,对选择器暗示单个目标 DOM 元素的所有操作都将抛出。请参阅定位器以了解有关严格模式的更多信息。#

        timezone_id:< str >更改上下文的时区。有关支持的时区 ID 列表,请参阅ICU 的 metaZones.txt。#

        user_agent:< str >在此上下文中使用的特定用户代理。#

        viewport:<无类型| Dict >为每个页面设置一致的视口。默认为 1280x720 视口。no_viewport禁用固定视口。#

                width < int >页面宽度(以像素为单位)。

                height < int >页面高度(以像素为单位)。

获取所有浏览器上下文

        <List[BrowserContext]>,返回所有打开的浏览器上下文的数组。在新创建的浏览器中,这将返回零浏览器上下文。

# 获取所有浏览器上下文
print(myBrowser.contexts)

cookie的获取、添加、清理

# 获取 cookies
allCookies = myBrowserContext.cookies()
# 添加 cookies
myBrowserContext.add_cookies(allCookies)
# 清理 cookies
myBrowserContext.clear_cookies()

  • 获取myBrowserContext.cookies()

        urls <字符串| List [ str ] > URL 的可选列表。#

        返回: <列表[字典] > #

                name < str >

                value < str >

                domain < str >

                path < str >

                expires < float > Unix 时间,以秒为单位。

                httpOnly <布尔>

                secure <布尔>

                sameSite <"Strict"|"Lax"|"None">

        如果未指定 URL,则此方法返回所有 cookie。如果指定了 URL,则仅返回影响这些 URL 的 cookie。

  • 添加 myBrowserContext.add_cookies()

        cookies <列表[字典] > #

                name < str >

                value < str >

                url < str > url 或域/路径是必需的。可选的。

                domain < str > url 或 domain/path 都是必需的 可选的。

                path < str > url 或 domain/path 都是必需的 可选的。

                expires < float > Unix 时间,以秒为单位。可选的。

                httpOnly < bool >可选。

                secure < bool >可选。

                sameSite <"Strict"|"Lax"|"None">可选。

        返回: <无类型> #

  • 清理myBrowserContext.clear_cookies()

创建新页面

        在新的浏览器上下文中创建一个新页面。关闭此页面也会关闭上下文。

# 在新的浏览器上下文中创建一个新页面。关闭此页面也会关闭上下文。
myPage = myBrowserContext.new_page()