Browser_context使用

使用browser.new_context() 创建context对象,context之间是相互隔离的,可以理解为轻量级的浏览器实例.
注:测试隔离是指每个测试与另一个测试完全隔离。每个测试都独立于任何其他测试运行。这意味着每个测试都有自己的本地存储、会话存储、cookie 等。Playwright 使用BrowserContext实现了这一点,这相当于隐身式配置文件。它们的创建速度快、成本低,并且完全隔离,即使在单个浏览器中运行也是如此。Playwright 为每个测试创建一个上下文,并在该上下文中提供一个默认页面。
如需要不同用户登录同一个网页,不需要创建多个浏览器实例,只需要创建多个context即可
通过context 上下文操作多个浏览器实例,它不会与其他浏览器上下文共享 cookies/缓存,适用于多用户同时登陆的场景

一个浏览器实例上打开2个标签页

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=2000)
    context = browser.new_context()     # 创建浏览器实例
    page = context.new_page()           # 打开标签页1
    page.goto('https://www.baidu.com/')
    page2 = context.new_page()          # 打开标签页2
    page2.goto('https://www.csdn.net/')

打开两个浏览器实例

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=2000)
    context1 = browser.new_context()     # 创建浏览器实例1
    page = context1.new_page()           # 打开实例1的标签页
    page.goto('https://www.baidu.com/')

    context2 = browser.new_context()     # 创建浏览器实例2
    page = context2.new_page()          # 打开实例2的标签页
    page.goto('https://www.csdn.net/')

处理新标签页
浏览器上下文中的事件page可用于获取在上下文中创建的新页面。这可用于处理通过target="_blank"链接打开的新页面。

打开百度页面的-新闻链接,会出现一个新标签页

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=2000)
    context = browser.new_context()     # 创建浏览器实例1
    page = context.new_page()           # 打开标签页
    page.goto('https://www.baidu.com/')
    print(page.title())                 # 打印当前页面title

    with context.expect_page() as new_page_info:
        page.click('text=新闻')          # 打开新选项卡
    new_page = new_page_info.value

    new_page.wait_for_load_state()      # 等待页面加载到指定状态
    print(new_page.title())             # 打印新页面title

处理弹出窗口
如果页面打开一个弹出窗口(例如通过链接打开的页面),您可以通过监听页面上的事件target="_blank"来获取对它的引用。popup除了browserContext.on(‘page’)事件之外还会发出此事件,但仅针对与此页面相关的弹出窗口。


```python

```python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=2000)
    context = browser.new_context()     # 创建浏览器实例1
    page = context.new_page()           # 打开标签页
    page.goto('https://www.baidu.com/')
    print(page.title())                 # 打印当前页面title

    with page.expect_popup() as popup_info:
        page.locator('a').get_by_text('新闻').click()
    popup = popup_info.value

    popup.wait_for_load_state()
    print(popup.title())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值