python+playwright 学习-60 在打开的多个标签页窗口灵活切换
前言
当页面打开了多个标签页后,如何切换到自己需要的标签页上呢?
使用场景
以百度首页为例,当打开多个标签页后, 如何切换到自己想要的页面上操作。
通过context.pages
可以获取到所有的page对象,每一个page对象就代表一个标签页实例
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())
运行结果
百度一下,你就知道
hao123_上网从这里开始
百度地图
好看视频--轻松有收获
百度贴吧——全球领先的中文社区
百度新闻——海量中文资讯平台
百度图片-发现多彩世界
通过title 判断页面切换
可以写个公共的函数,通过 title 或者 url 地址判断切换到自己想要的页面
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())