《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换

1.简介

浏览器多窗口的切换问题相比大家不会陌生吧,之前宏哥在java+selenium系列文章中就有介绍过。大致步骤就是:使用selenium进行浏览器的多个窗口切换测试,如果我们打开了多个网页,进行网页切换时,我们需要先获取各个页面的句柄,通过句柄来区分各个页面,然后使用switch_to.window()实现切换,这样的操作比较麻烦,而且宏哥在介绍和讲解的时候,也写了好几篇相关的文章。反过来今天我们所学的playwright来处理浏览器多窗口切换却比selenium更为简单快捷。下边宏哥就给小伙伴们或者童鞋们介绍一下playwrigh如何处理浏览器多个窗口的切换方法。

2.测试场景

我们以访问百度为例,百度首页有多个选项,新闻,hao123网址导航,贴吧等多个选项,我们点击不同的选项,就会打开不同的新标签页。当打开多个标签页后, 如何切换到自己想要的页面上操作。

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第1张图片

思路:我们可以通过脚本,输出百度首页各页面的标题,通过context.pages 可以获取到所有的page对象,每一个page对象就代表一个标签页实例。

2.1代码设计

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第2张图片

2.2参考代码
# coding=utf-8

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2023-07-13
@author: 北京-宏哥   QQ交流群:705269076
公众号:北京宏哥
Project: 《最新出炉》系列入门篇-Python+Playwright自动化测试-14-playwright处理浏览器多窗口切换
'''

# 3.导入模块
from playwright.sync_api import sync_playwright

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())
    browser.close()
2.3运行代码

1.运行代码,右键Run'Test',控制台输出,如下图所示:

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第3张图片

2.运行代码后电脑端的浏览器的动作。如下图所示:

3.多窗口切换方法

3.1Title切换

前边已经将所有的标签的title都循环出来了,我们只要切换到我们需要操作的title标签页即可。

3.1.1代码设计

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第4张图片

3.1.2参考代码
# coding=utf-8

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2023-07-13
@author: 北京-宏哥   QQ交流群:705269076
公众号:北京宏哥
Project: 《最新出炉》系列入门篇-Python+Playwright自动化测试-14-playwright处理浏览器多窗口切换
'''

# 3.导入模块
from playwright.sync_api import sync_playwright

def switch_to_page(context, title=None):
    """切换到指定title 名称的标签页"""
    for item_page in context.pages:
        if title:
            if title in item_page.title():
                # 激活当前选项卡
                item_page.bring_to_front()
                return item_page
    else:
        print("not found title")
    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='新闻')
    print(page1.title())
    browser.close()
3.1.3运行代码

1.运行代码,右键Run'Test',控制台输出,如下图所示:

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第5张图片

2.运行代码后电脑端的浏览器的动作。如下图所示:

3.2URL切换

和title的思路类似:前边已经将所有的标签的title都循环出来了,我们只要切换到我们需要操作的url标签页即可。

3.2.1代码设计

3.2.2参考代码
# coding=utf-8

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2023-07-13
@author: 北京-宏哥   QQ交流群:705269076
公众号:北京宏哥
Project: 《最新出炉》系列入门篇-Python+Playwright自动化测试-14-playwright处理浏览器多窗口切换
'''

# 3.导入模块
from playwright.sync_api import sync_playwright

def switch_to_page(context, url=None):
    """切换到指定url 的 标签页"""
    for item_page in context.pages:
        if url:
            if url in item_page.url:
                # 激活当前选项卡
                item_page.bring_to_front()
                return item_page
    else:
        print("not found 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, url='hao')
    print(page1.title())
    browser.close()
3.2.3运行代码

1.运行代码,右键Run'Test',控制台输出,如下图所示:

《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换_第6张图片

2.运行代码后电脑端的浏览器的动作。如下图所示:

4.小结

本文主要介绍了playwright的页面切换,playwright切换页面不需要获取页面句柄,实现比selenium简单许多,是playwright对于selenium的一大优势。

  每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

你可能感兴趣的:(python,开发语言,测试工具,前端,网络)