Playwright网页切换
在网页上点击一些按钮或超链接时,有时会打开一个新的网页而不是一个窗口。这个时候如果下一步操作是在新的网页上,那么就需要切换网页窗口,切换到网页后再执行元素定位等操作。playwright处理浏览器多窗口切换简单快捷。下边老姜就给小伙伴们或者童鞋们介绍一下playwrigh如何处理浏览器多个窗口的切换方法。
窗口切换过程:
1、 context.pages 获取所有的page对象,返回数据类型为列表,列表中的网页对象的索引按照打开顺序从0开始依次递增。
2、 page. bring_to_front() 激活网页,将网页显示在屏幕最上层,本行代码不写也不影响脚本执行。
3、 page.close() 关闭网页
我们以万年历、计算器这几个网页为例来看一下如何切换网页。
实践代码:
'''
author: 测试-老姜 交流微信/QQ:349940839
#欢迎添加微信或QQ,加入学习群共同学习交流。
#QQ交流群号:877498247
#西安的朋友欢迎当面交流。
'''
from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized']) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/login.jsp") # 打开网址
page.wait_for_timeout(2000)
page.get_by_role('link',name='万年历').click()
page.get_by_role('link',name='计算器').click()
page.wait_for_timeout(2000)
page_li = context.pages
page_li[1].bring_to_front() #万年历切换到最上层
for _ in range(3):
page_li[1].locator('#yuejia').click() #定位万年历页面上的元素并点击
page.wait_for_timeout(2000)
page_li[2].bring_to_front() # 计算器切换到最上层
for _ in range(3):
page_li[2].locator('[name="k7"]').click() #定位计算器页面上的元素并点击
page.wait_for_timeout(2000)
page_li[1].close() # 关闭万年历
page.wait_for_timeout(2000)
page_li[2].close() # 关闭计算器
page.wait_for_timeout(10000)
context.close()
browser.close()
playwright.stop()