首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python+playwright 学习-60 在打开的多个标签页窗口灵活切换

python+playwright 学习-60 在打开的多个标签页窗口灵活切换

作者头像
上海-悠悠
发布于 2023-08-25 08:54:50
发布于 2023-08-25 08:54:50
2.7K0
举报

前言

当页面打开了多个标签页后,如何切换到自己需要的标签页上呢?

使用场景

以百度首页为例,当打开多个标签页后, 如何切换到自己想要的页面上操作。

通过context.pages 可以获取到所有的page对象,每一个page对象就代表一个标签页实例

代码语言:javascript
复制
from playwright.sync_api import sync_playwright
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/

with sync_playwright() as playwright:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://www.baidu.com')

    # 点开多个标签页
    for link in page.locator('#s-top-left>a').all():
        link.click()

    # 遍历page对象
    for i in context.pages:
        print(i.title())

运行结果

代码语言:javascript
复制
百度一下,你就知道
hao123_上网从这里开始
百度地图
好看视频--轻松有收获
百度贴吧——全球领先的中文社区
百度新闻——海量中文资讯平台
百度图片-发现多彩世界

通过title 判断页面切换

可以写个公共的函数,通过 title 或者 url 地址判断切换到自己想要的页面

代码语言:javascript
复制
from playwright.sync_api import sync_playwright
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/

def switch_to_page(context, title=None, url=None):
    """切换到指定title 名称 或 url 的 标签页"""
    for item_page in context.pages:
        if title:
            if title in item_page.title():
                # 激活当前选项卡
                item_page.bring_to_front()
                return item_page
        elif url:
            if url in item_page.url:
                # 激活当前选项卡
                item_page.bring_to_front()
                return item_page
    else:
        print("not found title or url")
    return context.pages[0]

with sync_playwright() as playwright:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://www.baidu.com')

    # 点开多个标签页
    for link in page.locator('#s-top-left>a').all():
        link.click()

    # 打开多个tab 标签页, 切换
    page1 = switch_to_page(context, title='hao')
    print(page1.title())
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 前言
  • 使用场景
  • 通过title 判断页面切换
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档