playwright同步模块sync_api的浏览器上下文
qingheluo2021-01-04清河洛827
创建一个浏览器上下文相当于一个独立的浏览器进程,不会与其他浏览器上下文共享cookie和缓存等信息context=browser.new_context(Parameters)accept_downloads :bool(False),是否自动下载所有附件
base_url :str,设定基网址,访问网址使用相对或者绝对路径时的基网址
bypass_csp :bool,是否绕过页面的内容安全策略切换
color_scheme :str("light"),主题模式,支持的值light,dark,no-preference
device_scale_factor:floa...
创建一个浏览器上下文
相当于一个独立的浏览器进程,不会与其他浏览器上下文共享cookie和缓存等信息
context=browser.new_context(Parameters)
accept_downloads :bool(False),是否自动下载所有附件 base_url :str,设定基网址,访问网址使用相对或者绝对路径时的基网址 bypass_csp :bool,是否绕过页面的内容安全策略切换 color_scheme :str("light"),主题模式,支持的值light,dark,no-preference device_scale_factor:float(1.0),设备像素比DPR。默认缩放为100%的情况下,设备像素和CSS像素的比值,越大越清晰 extra_http_headers :dict,指定该上下文中每个请求发送的HTTP标头 forced_colors :str("none")模拟媒体功能,支持的值为'forced-colors''active''none' geolocation :dict,制定模拟的位置,字典的字段: latitude :float,-90和90之间的纬度 longitude :float,-180和180之间的经度 accuracy :float(0.0),非负精度值 has_touch :bool(False),指定是否支持触摸事件 http_credentials :dict,制定http验证信息,包含的字段username和password ignore_https_errors :bool(False),是否忽略HTTPS错误 is_mobile :bool(False),是否考虑了标记并启用了触摸事件。火狐浏览器不支持 java_script_enabled :bool(True),是否启用支持JavaScript locale :str,指定用户语言和区域, 如en-GB(英语-英国)、en-US(英语-美国)、de-DE(德语-德国)、zh-CH(中文-大陆,简体中文)、 zh-tw(中文-台湾,繁体中文)、ja-JP(日语-日本)、fr-FR(法语-法国)等 no_viewport :bool,是否允许调整窗口大小 offline :bool(False),是否模拟脱机状态 permissions :[str]list,要授予所有页面的权限列表,列表可用的元素有 'geolocation':获取地理位置(需要配合geolocation参数使用) 'midi'、'midi-sysex' (system-exclusive midi)、'notifications'、'push'、'camera'、 'microphone'、'background-sync'、'ambient-light-sensor'、'accelerometer'、'gyroscope'、 'magnetometer'、'accessibility-events'、'clipboard-read'、'clipboard-write'、'payment-handler' proxy :dict,网络代理设置,可用的字段 server :str,指定代理,支持HTTP和SOCKS代理 如"http://myproxy.com:3128"或"socks5://myproxy.com:3128" 不指定代理类别默认为HTTP代理,如"myproxy.com:3128" bypass :str,当网址中包含指定特征字符串时不使用代理,多个特征字符串用逗号隔开,如"chromium.org,domain.com" username :str,指定HTTP代理的用户名 password :str,指定HTTP代理的密码 在windows中,需要创建浏览器对象时使用代理选项,即全局代理,可以随意指定但必须有,如launch({proxy:{server:'http://any_str'}}),才能在上下文中使用代理,否则上下文中指定的代理不生效 record_har_omit_content :bool(False),是否忽略来自HAR的请求 record_har_path :str,将所有的HAR记录到指定的HAR文件中 如果未指定,则不记录HAR,必须调用browser_context.close()才能最终保存HAR文件 record_video_dir :str,将所有的操作录制到指定的视频文件中 如果未指定,则不录制视频。必须调用browser_context.close()才能最终保存视频 record_video_size :dict,录制视频的尺寸。如果未指定,则不超过800x800,默认为800x450,可用的字段 width :int,视频帧宽度 height :int,视频帧高度 storage_state :str或dict,使用制定文件或指定信息的状态填充上下文 str,使用通过browser_context.storage_state(**kwargs)获取的登录信息 dict可用的字段 cookies :[dict]list,要为上下文设置的Cookie,每个dict的可用字段 name :str value :str domain :str path :str expires :floatUnix 时间(以秒为单位) httpOnly :bool secure :bool sameSite :str,站点标志,可选值有"Strict","Lax"或"None" origins <列表[字典] >要为上下文设置的本地存储豆腐干 origin :str localStorage :[dict]list name :str value :str strict_selectors :bool,指定为上下文启用严格的选择器模式,在此模式下,当多个元素与选择器匹配时,将对所有元素执行操作 user_agent :str,指定使用的用户代理 viewport :dict,为每个页面设置窗口大小。默认为1280x720 width :int,页面宽度(以像素为单位)。 height :int,页面高度(以像素为单位)。浏览器上下文的属性和方法:
支持的event事件: "backgroundpage"、"close"、"page"、"request"、"requestfailed"、"requestfinished"、"response"、"serviceworker" service_workers:返回上下文中的所有现有服务工作线程列表,仅Chromium浏览器支持 add_cookies([dict]list):将指定的cookies添加到上下文中,dict的字段参考new_context()的storage_state参数 add_init_script(**kwargs):该上下文中每个页面打开时(在运行任何脚本之前)运行的javascript脚本,可用的参数 path:str,指定要运行的js文件 script:str,指定要运行的js代码 browser:返回创建该上下文的浏览器对象 browser:清除上下文中的cookies clear_permissions():清除上下文的所有授予的权限 close():关闭浏览器上下文 cookies([urls]):返回影响指定URL的cookie,url可以是一个字符串,也可以是网址字符串组成的列表,如果未指定urls则返回所有cookie expect_event(event:str,** , predicate:func=None,timeout:float=30000.0) expect_page(** , predicate:func=None,timeout:float=30000.0) 等待指定的事件发生并执行predicate指定的方法,func方法接受指定的事件数据 该方法返回一个上下文管理器 expose_binding(name:str, callback:func, ** , handle:bool):绑定一个函数到该上下文中的所有页面中 name:绑定的函数名称 callback:绑定要执行的函数执行,该函数接受一个包含当前页面所有信息的对象 handle :是否将参数作为句柄传递,而不是按值传递。传递句柄时,仅支持一个参数。按值传递时,支持多个参数 expose_function(name:str, callback:func):功能同上,不同的是该方法不会自动传递参数 示例: def demo(args): return args def run(playwright): browser = playwright.chromium.launch(headless=False) context = browser.new_context() context.expose_binding("diy_bind", demo) context.expose_function("diy_func", demo) page = context.new_page() page.set_content(""" """) page.click("button") with sync_playwright() as playwright: run(playwright) grant_permissions(permissions:[str]list, ** , origin:str):向浏览器上下文授予指定的权限。如果指定origin则仅授予指定的源权限 origin:要向其授予权限的源,如"https://example.com" new_page():在浏览器上下文中创建一个新页面 pages:返回上下文中所有打开的页面,不包含backgroundPage route(url, handler, **, times):设置页面路由,启用路由将禁用 http 缓存 url为匹配规则,可以为一个glob风格的字符串,也可以是一个正则对象 glob风格:context.route("**/*.{png,jpg,jpeg}", lambda route: route.abort()) 正则对象:context.route(re.compile(r"(.png$)|(.jpg$)"), lambda route: route.abort()) handle:表示要处理url的函数,接受访问的url为参数 times:int,使用路由的频率。默认情况下每次都会使用 unroute(url, handler, **, times):删除指定的路由,参数和值必须和创建的路由完全相同 set_default_navigation_timeout(timeout:int):更改默认最大导航时间(毫秒) set_default_timeout(timeout:int):更改默认超时时间(毫秒) set_extra_http_headers(headers):指定HTTP标头并在上下文中任何页面发起的每个请求一起发送,header为一个dict set_geolocation(geolocation):指定模拟的经纬度,geolocation为一个字典 set_offline(bool):是否模拟浏览器上下文处于脱机状态的网络 storage_state(**,path):保存此浏览器上下文的存储状态到path指定的文件中,包含当前 Cookie 和本地存储快照 wait_for_event(event,** , predicate:func=None,timeout:float=30000.0) event为字符串表示的事件 predicate表示事件触发时运行的函数 事件触发时,会将event值传递给predicate,同时会传入context.on(event) 谓词返回真值时解析 如果上下文在事件触发前关闭,将引发错误。返回事件数据值 requests:获得一个与此上下文关联的 API 测试帮助程序。使用此 API 发出的请求将使用上下文 Cookie api_request_context.delete(url, **kwargs) api_request_context.fetch(url_or_request, **kwargs) api_request_context.get(url, **kwargs) api_request_context.head(url, **kwargs) api_request_context.patch(url, **kwargs) api_request_context.post(url, **kwargs) api_request_context.put(url, **kwargs) 以上方法返回一个APIResponse对象 kwargs的常用参数 data :str or dict,设置请求的数据。 如果是对象,则序列化为json字符串,且默认表头为application/json 如果为字符串,默认标头为application/octet-stream fail_on_status_code :bool,是否抛出2xx和3xx以外的响应代码。默认将为所有状态代码返回 form :dict,设置发送的表单数据,指定此参数默认标头为application/x-www-form-urlencoded headers :dict,设置HTTP标头 ignore_https_errors :bool(False),发送网络请求时是否忽略HTTPS错误 multipart :dict,设置发送的表单数据,指定此参数默认标头multipart/form-data name :str,文件名 mimeType :str,文件类型 buffer :byte,文件内容 params :dict,查询参数,与URL一起发送 timeout :float(30000),请求超时(以毫秒为单位) api_request_context.dispose():不会存储相应而是保存在内存中 api_request_context.storage_state(**,path):将状态保存到指定文件中 APIResponse对象的方法 api_response.body():byte,返回带有响应正文的缓冲区 api_response.dispose():处理此响应的正文。如果未调用,则body将保留在内存中,直到上下文关闭 api_response.headers:dict,与此响应关联的所有响应HTTP标头的对象 api_response.headers_array:[dict]list,返回与此响应关联的所有响应HTTP标头 api_response.json():将body正文从json格式转换为序列化数据,如果无法解析引发JSON.parse错误 api_response.ok:bool,响应状态码是否是2xx api_response.status:int,相应的状态码 api_response.status_text:str,相应的状态文本 api_response.text():str,返回body正文的字符串表示 api_response.url:str,返回相应的网址