安装模块
pip install playwright
安装内核
playwright install
- python实例
from playwright.sync_api import Playwright, sync_playwright
def get_browser() -> Playwright:
with sync_playwright() as p:
#for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = p.chromium.launch(channel="msedge",headless=False,slow_mo=1000)
#p.chromium, p.firefox, p.webkit(channel 浏览器类型
# headless 如果不设置为 False,默认是无头模式启动浏览器,我们看不到任何窗口。
# slow_mo 操作延时)
context = browser.new_context() # 创建上下文,浏览器实例
page = context.new_page() # 打开标签页
page.goto('https://www.baidu.com')
#截图
#page.screenshot(path=f'screenshot-{browser_type.name}.png')
print(page.title()) #打印表头
'''
/: 从根节点选取
//: 从非根节点选取
*: 任意节点选取
@: 根据属性筛选
text(): 根据文本筛选
and: 关联属性或者链接文本
[]: 可以防止下标/属性/链接文本
.: 选取当前节点
..:选取当前节点的父节点
contains:包含
'''
#Playwright XPath 框架
# 多属性定位 控制台:$x('//*[@id="s-usersetting-top"]') .[0].textContent
print(page.locator('//*[@id="s-usersetting-top" and @name="tj_settingicon"]').text_content())
#通过. ..来定位 $x('//div[@id="s-top-left"]/a/../div/a')[0].textContent
#通过文本定位 $x('//a[text()="hao123"]')
#模糊匹配 '//a[contains(text(),"hao")]
#CSS 定位方式
# id定位 控制台 $('#kw') 标签+属性 $('input#kw')
#通过CSS定位 page.locator('.s_ipt').fill('美女')
# page.locator('div > form > span > input.s_ipt').fill('动漫')
page.locator('input#kw').fill('美女')
page.locator('#su').click()
#回退键
#page.go_back()
#特有定位方式 page.get_by_
with context.expect_page() as new_page_info:
page.locator('//*[@id="1"]/div/div[1]/div/div[1]/a[1]/img').click()
#page.click('a[target="_blank"]')
new_page = new_page_info.value
new_page.wait_for_load_state() # 等待页面加载到指定状态
print(new_page.title())
new_page.wait_for_timeout(3000)
#关闭
browser.close()
模拟手机浏览器
iphone = p.devices["iPhone 6"]
context = browser.new_context(**iphone) # 创建上下文,浏览器实例
如果提示没有安装指定浏览器 根据提示安装就好win11(playwright install)
- 脚本录制
录制脚本保存 指定浏览器
python -m playwright codegen --target python -o 'edge.py' -b chromium --channel=msedge
指定窗口大小–viewport-size选项生成不同大小的窗口
playwright codegen --viewport-size=800,600
指定设备型号 --device="iPhone 12 Pro"
playwright codegen --device="iPhone 12 Pro"
模拟地理位置、语言和时区
playwright codegen --timezone="Asia/Shanghai" --geolocation="30.890221,120.492348" --lang="zh-CN"
运行codegen以在会话结束时–save-storage保存cookie和localStorage ,执行身份验证并关闭浏览器后,auth.json将包含存储状态
playwright codegen --save-storage=auth.json
运行–load-storage以消耗先前加载的存储。这样,所有的cookie和localStorage都将被恢复,使大多数网络应用程序进入身份验证状态。
playwright open --load-storage=auth.json