abort, continue_, fallback, fetch, fulfill
终止路由请求, 并且可以设置error_code
,默认是failed
, 其他值有 aborted, accessdenied, connectionaborted, timeout
等
# 如果是图片类型终止请求
page.route("**/*", lambda route: route.abort() if route.request.resource_type == "image" else route.continue_())
# or
def handle_route(route, request):
if request.resource_type in ["image", "media", "websocket"]:
route.abort("aborted")
else:
route.continue_()
page.route("**/*", handle_route)
# set headers
def handle(route, request):
# override headers
headers = {
**request.headers,
"foo": "foo-value", # set "foo" header
"bar": None # remove "bar" header
}
# del headers["bar"] # remove "bar" header
route.continue_(headers=headers)
# set url
def handle(route, request):
# override headers
url = request.url.replace("test", "test2")
route.continue_(url=url)
booking.page.route("**/api/abc**", handle) # 特定的请求包含/api/abc的请求中的 test替换为请求test2
执行请求并且返回结果, 返回值类型是 APIResponse
可选参数除了headers, method, post_data, url
, 还有 max_redirects, timeout
用法:在fulfill
中
application/json
, 和body参数不能同时存在,会报错的(playwright 的1.29.0版本使用json参数这里有问题,用目前最新的1.37.0版本验证此问题已经解决)# 修改响应内容
page.route("**/search**", lambda route: route.fulfill(
content_type="text/plain",
body="page not found!"))
# 通过path修改响应内容
page.route("**/search**", lambda route: route.fulfill(path="test.json"))
# 通过json修改响应内容
def handle(route):
response = route.fetch()
r_json = response.json()
r_json["data"] = [] # 修改 响应内容中的data为[]
route.fulfill(response=response, json=r_json)
continue_
的参数参考文档: Route