写在前面,欢迎去我的博客参观:Scout he
1、Browser
这是一个浏览器实例,脚本运行需要首先打开浏览器实例
# playwright.brwoser_type.action(**kwargs)可以理解为指定浏览器内核
browser = playwright.chromium.launch(channel="chrome",headless=False)
# launch是最常用的一个函数,他有大量的参数,这里介绍常用的的
headless 是否显示GUI,默认是TRUE不显示
channel 指定浏览器版本,"chrome", "chrome-beta", "chrome-dev", "chrome-canary",
proxy 浏览器代理设置
timeout 等待超时时间,默认30000ms(30s)
slow_mo 减慢操作速度,浮点型,一边可以看清楚操作
顺便说一下,playwright的所有操作都有自动等待的功能,时间都是30s
2、Browser contexts
这个是独立的浏览器,隐身对话,意思是每一个Beowser contexts都是独立的,互相之间没有关系,等于说全都是新装的浏览器。
# 根据浏览器内核创建浏览器
context = browser.new_context(accept_downloads=False)
# 创建新页面
page = context.new_page()
2.1、browser.new_context
# browser.new_context的参数包括所有跟浏览器设置相关的
# 可以理解为根据浏览器创建一个新的浏览器
accept_downloads 是否下载所有附件,默认False不下载
geolocation 设定经纬度
user_agent 设定user agent
viewport 设定页面大小,规格,例如1280*720
offline 离线模式加载
2.2、context
# context就是浏览器层面的操作
context.new_page() 返回一个新页面
context.pages 返回所有打开的页面[list]
context.add_cookies([cookie_object1, cookie_object2]) 添加cookie
context.cookies() 返回cookie
context.wait_for_event(event, **kwargs) 等待event完成
3、Pages and frames
一个 Browser contexts 有多个pages,一个 page 是一个单独的tab,或者弹出窗口。用于导航到url ,或者与页面交互,比如点击,输入文字等。
一个 page 有多个 Frame (框架),框架内的操作无法通过page.**操作,只能通过page.Frame.func()操作,但是通常在录制模式下,他会自动识别是否是框架内的操作,如果不懂怎么定位框架,那么可以使用录制模式来找。
3.1、Pages
大部分操作都是在page层面的,所以page有最多的函数
from playwright.sync_api import sync_playwright
# 这是一个创建页面,定位到指定链接,并截屏保存的例