public class Page extends EventEmitter
| 构造器和说明 |
|---|
Page(CDPSession client,
Target target,
boolean ignoreHTTPSErrors,
TaskQueue<String> screenshotTaskQueue) |
| 限定符和类型 | 方法和说明 | ||
|---|---|---|---|
ElementHandle |
$(String selector)
此方法在页面内执行 document.querySelector。
|
||
List<ElementHandle> |
$$(String selector)
此方法在页面内执行 document.querySelectorAll。
|
||
Object |
$$eval(String selector,
String pageFunction,
PageEvaluateType type,
Object... args)
此方法在页面内执行 Array.from(document.querySelectorAll(selector)),然后把匹配到的元素数组作为第一个参数传给 pageFunction。
|
||
Object |
$eval(String selector,
String pageFunction,
PageEvaluateType type,
Object... args)
此方法在页面内执行 document.querySelector,然后把匹配到的元素作为第一个参数传给 pageFunction。
|
||
List<ElementHandle> |
$x(String expression)
此方法解析指定的XPath表达式。
|
||
Accessibility |
accessibility() |
||
ElementHandle |
addScriptTag(ScriptTagOptions options)
注入一个指定src(url)或者代码(content)的 script 标签到当前页面。
|
||
ElementHandle |
addStyleTag(StyleTagOptions options)
添加一个指定link的 link rel="stylesheet" 标签。
|
||
void |
authenticate(Credentials credentials)
为HTTP authentication 提供认证凭据 。
|
||
void |
bringToFront()
相当于多个tab时,切换到某个tab。
|
||
Browser |
browser()
返回页面隶属的浏览器
|
||
BrowserContext |
browserContext()
返回默认的浏览器上下文
|
||
void |
click(String selector)
此方法找到一个匹配 selector 选择器的元素,如果需要会把此元素滚动到可视,然后通过 page.mouse 点击它。
|
||
void |
click(String selector,
boolean isBlock)
此方法找到一个匹配 selector 选择器的元素,如果需要会把此元素滚动到可视,然后通过 page.mouse 点击它。
|
||
void |
click(String selector,
ClickOptions options,
boolean isBlock)
此方法找到一个匹配 selector 选择器的元素,如果需要会把此元素滚动到可视,然后通过 page.mouse 点击它。
|
||
void |
close()
关闭页面
|
||
void |
close(boolean runBeforeUnload)
page.close() 在 beforeunload 处理之前默认不执行
注意 如果 runBeforeUnload 设置为true,可能会弹出一个 beforeunload 对话框。
|
||
String |
content()
返回页面的完整 html 代码,包括 doctype。
|
||
List<Cookie> |
cookies()
返回当前页面的cookies
|
||
List<Cookie> |
cookies(List<String> urls)
获取指定url的cookies
|
||
Coverage |
coverage() |
||
static Page |
create(CDPSession client,
Target target,
boolean ignoreHTTPSErrors,
Viewport viewport,
TaskQueue<String> screenshotTaskQueue)
创建一个page对象
|
||
void |
deleteCookie(List<DeleteCookiesParameters> cookies)
删除cookies
|
||
void |
emulate(Device options)
根据指定的参数和 user agent 生成模拟器。
|
||
void |
emulateMedia(String type)
改变页面的css媒体类型。
|
||
void |
emulateMediaFeatures(List<MediaFeature> features) |
||
void |
emulateMediaType(String type)
改变页面的css媒体类型。
|
||
void |
emulateTimezone(String timezoneId)
更改页面的时区,传null将禁用将时区仿真
voidemulateVisionDeficiency(VisionDeficiency type)
模拟页面上给定的视力障碍,不同视力障碍,截图有不同效果
| ||
Object |
evaluate(String pageFunction,
Object... args)
此方法是
evaluate(String, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串 |
||
Object |
evaluate(String pageFunction,
PageEvaluateType type,
Object... args)
在页面实例上下文中执行方法
添加一个方法,在以下某个场景被调用
页面导航完成后
页面的iframe加载或导航完成。
|
||
JSHandle |
evaluateHandle(String pageFunction,
Object... args)
此方法是
evaluateHandle(String, PageEvaluateType, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串 |
||
JSHandle |
evaluateHandle(String pageFunction,
PageEvaluateType type,
Object... args)
此方法和 page.evaluate 的唯一区别是此方法返回的是页内类型(JSHandle)
|
||
void |
evaluateOnNewDocument(String pageFunction,
Object... args)
此方法是
evaluateOnNewDocument(String, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串 |
||
void |
evaluateOnNewDocument(String pageFunction,
PageEvaluateType type,
Object... args)
在新dom产生之际执行给定的javascript
当你的js代码为函数时,type=
PageEvaluateType.FUNCTION
当你的js代码为字符串时,type=PageEvaluateType.STRING |
||
void |
exposeFunction(String name,
Function<List<?>,Object> puppeteerFunction)
此方法添加一个命名为 name 的方法到页面的 window 对象 当调用 name 方法时,在 node.js 中执行 puppeteerFunction
|
||
void |
focus(String selector)
此方法找到一个匹配selector的元素,并且把焦点给它。
|
||
List<Frame> |
frames()
返回加载到页面中的所有iframe标签
|
||
protected CDPSession |
getClient() |
||
boolean |
getJavascriptEnabled() |
||
Response |
goBack() |
||
Response |
goBack(PageNavigateOptions options)
导航到页面历史的前一个页面
options 的 referer参数不用填,填了也用不上
options 导航配置,可选值:
otimeout 跳转等待时间,单位是毫秒, 默认是30秒, 传 0 表示无限等待。
|
||
Response |
goForward() |
||
Response |
goForward(PageNavigateOptions options)
导航到页面历史的后一个页面。
|
||
Response |
goTo(String url)
导航到某个网站
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
|
||
Response |
goTo(String url,
boolean isBlock)
导航到指定的url,可以配置是否阻塞,可以配合下面这个方法使用,但是不限于这个方法
waitForResponse(String)
因为如果不阻塞的话,页面在加载完成时,waitForResponse等waitFor方法会接受不到结果而抛出超时异常 |
||
Response |
goTo(String url,
PageNavigateOptions options)
导航到指定的url,因为goto是java的关键字,所以就采用了goTo方法名
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
|
||
Response |
goTo(String url,
PageNavigateOptions options,
boolean isBlock)
导航到指定的url,因为goto是java的关键字,所以就采用了goTo方法名
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
|
||
void |
hover(String selector)
此方法找到一个匹配的元素,如果需要会把此元素滚动到可视,然后通过 page.mouse 来hover到元素的中间。
|
||
protected void |
initialize() |
||
boolean |
isClosed()
表示页面是否被关闭。
|
||
Keyboard |
keyboard() |
||
Frame |
mainFrame()
返回主 Frame
保证页面一直有有一个主 frame
|
||
Metrics |
metrics()
返回页面的一些基本信息
|
||
Mouse |
mouse() |
||
void |
onClose(EventHandler<Object> handler)
监听页面的关闭事件
|
||
void |
onConsole(EventHandler<ConsoleMessage> handler) |
||
void |
onDialg(EventHandler<Dialog> handler) |
||
void |
onError(EventHandler<Error> handler) |
||
void |
onFrameattached(EventHandler<Frame> handler)
frame attach的时候触发
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
|
||
void |
onFramedetached(EventHandler<Frame> handler)
frame detached的时候触发
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
|
||
void |
onFramenavigated(EventHandler<Frame> handler)
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
|
||
void |
onLoad(EventHandler<Object> handler) |
||
void |
onMetrics(EventHandler<PageMetrics> handler) |
||
void |
onPageerror(EventHandler<RuntimeException> handler) |
||
void |
onPopup(EventHandler<Error> handler) |
||
void |
onRequest(EventHandler<Request> handler) |
||
void |
onRequestfailed(EventHandler<Request> handler) |
||
void |
onRequestfinished(EventHandler<Request> handler) |
||
void |
onResponse(EventHandler<Response> handler) |
||
void |
onWorkercreated(EventHandler<Worker> handler)
注意不要在这个事件内直接调用Worker中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
|
||
void |
onWorkerdestroyed(EventHandler<Worker> handler)
注意不要在这个事件内直接调用Worker中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
|
||
byte[] |
pdf(PDFOptions options)
生成当前页面的pdf格式,带着 pring css media。
|
||
void |
pdf(String path)
生成当前页面的pdf格式,带着 pring css media。
|
||
JSHandle |
queryObjects(JSHandle prototypeHandle)
此方法遍历js堆栈,找到所有带有指定原型的对象
|
||
Response |
reload(PageNavigateOptions options)
重新加载页面
|
||
String |
screenshot(ScreenshotOptions options)
截图
备注 在OS X上 截图需要至少1/6秒。
|
||
String |
screenshot(String path)
屏幕截图
|
||
List<String> |
select(String selector,
List<String> values)
当提供的选择器完成选中后,触发change和input事件 如果没有元素匹配指定选择器,将报错。
|
||
void |
setBypassCSP(boolean enabled)
设置绕过页面的安全政策
注意 CSP 发生在 CSP 初始化而不是评估阶段。
|
||
void |
setCacheEnabled(boolean enabled)
设置每个请求忽略缓存。
|
||
protected void |
setClient(CDPSession client) |
||
protected void |
setClosed(boolean closed) |
||
void |
setContent(String html)
给页面设置html
|
||
void |
setContent(String html,
PageNavigateOptions options)
给页面设置html
|
||
void |
setCookie(List<CookieParam> cookies) |
||
void |
setDefaultNavigationTimeout(int timeout)
|
||
void |
setDefaultTimeout(int timeout)
|
||
void |
setExtraHTTPHeaders(Map<String,String> headers)
当前页面发起的每个请求都会带上这些请求头
注意 此方法不保证请求头的顺序
|
||
void |
setGeolocation(double longitude,
double latitude)
设置页面的地理位置
|
||
void |
setGeolocation(double longitude,
double latitude,
int accuracy)
Sets the page's geolocation.
|
||
void |
setJavaScriptEnabled(boolean enabled)
是否启用js
注意 改变这个值不会影响已经执行的js。
|
||
void |
setOfflineMode(boolean enabled)
设置启用离线模式。
|
||
void |
setRequestInterception(boolean value)
启用请求拦截器,会激活 request.abort, request.continue 和 request.respond 方法。
|
||
void |
setUserAgent(String userAgent)
给页面设置userAgent
|
||
void |
setViewport(Viewport viewport)
如果是一个浏览器多个页面的情况,每个页面都可以有单独的viewport
注意 在大部分情况下,改变 viewport 会重新加载页面以设置 isMobile 或者 hasTouch
|
||
void |
tap(String selector)
此方法找到一个匹配的元素,如果需要会把此元素滚动到可视,然后通过 page.touchscreen 来点击元素的中间位置 如果没有匹配的元素,此方法会报错
|
||
void |
tap(String selector,
boolean isBlock)
此方法找到一个匹配的元素,如果需要会把此元素滚动到可视,然后通过 page.touchscreen 来点击元素的中间位置 如果没有匹配的元素,此方法会报错
|
||
Target |
target() |
||
String |
title()
返回页面标题
|
||
Touchscreen |
touchscreen() |
||
Tracing |
tracing() |
||
void |
type(String selector,
String text)
每个字符输入后都会触发 keydown, keypress/input 和 keyup 事件
要点击特殊按键,比如 Control 或 ArrowDown,用 keyboard.press
|
||
void |
type(String selector,
String text,
int delay)
每个字符输入后都会触发 keydown, keypress/input 和 keyup 事件
要点击特殊按键,比如 Control 或 ArrowDown,用 keyboard.press
|
||
Viewport |
viewport()
获取Viewport,Viewport各个参数的含义:
width 宽度,单位是像素
height 高度,单位是像素
deviceScaleFactor 定义设备缩放, (类似于 dpr)。
|
||
JSHandle |
waitFor(String selectorOrFunctionOrTimeout)
此方法根据第一个参数的不同有不同的结果:
如果 selectorOrFunctionOrTimeout 是 string, 那么认为是 css 选择器或者一个xpath, 根据是不是'//'开头, 这时候此方法是 page.waitForSelector 或 page.waitForXPath的简写
如果 selectorOrFunctionOrTimeout 是 function, 那么认为是一个predicate,这时候此方法是page.waitForFunction()的简写
如果 selectorOrFunctionOrTimeout 是 number, 那么认为是超时时间,单位是毫秒,返回的是Promise对象,在指定时间后resolve
否则会报错
|
||
JSHandle |
waitFor(String selectorOrFunctionOrTimeout,
WaitForSelectorOptions options,
Object... args)
此方法根据第一个参数的不同有不同的结果:
如果 selectorOrFunctionOrTimeout 是 string, 那么认为是 css 选择器或者一个xpath, 根据是不是'//'开头, 这时候此方法是 page.waitForSelector 或 page.waitForXPath的简写
如果 selectorOrFunctionOrTimeout 是 function, 那么认为是一个predicate,这时候此方法是page.waitForFunction()的简写
如果 selectorOrFunctionOrTimeout 是 number, 那么认为是超时时间,单位是毫秒,返回的是Promise对象,在指定时间后resolve
否则会报错
|
||
Future<FileChooser> |
waitForFileChooser()
等待一个文件选择事件,默认等待时间是30s
|
||
Future<FileChooser> |
waitForFileChooser(int timeout)
等待一个文件选择事件,默认等待时间是30s
|
||
JSHandle |
waitForFunction(String pageFunction)
要在浏览器实例上下文执行方法
|
||
Response |
waitForNavigation()
此方法在页面跳转到一个新地址或重新加载时解析,如果你的代码会间接引起页面跳转,这个方法比较有用
比如你在在代码中使用了Page.click()方法,引起了页面跳转
注意 通过 History API 改变地址会认为是一次跳转。
|
||
Response |
waitForNavigation(PageNavigateOptions options)
此方法在页面跳转到一个新地址或重新加载时解析,如果你的代码会间接引起页面跳转,这个方法比较有用
比如你在在代码中使用了Page.click()方法,引起了页面跳转
注意 通过 History API 改变地址会认为是一次跳转。
|
||
Request |
waitForRequest(Predicate<Request> predicate)
等到某个请求
|
||
Request |
waitForRequest(String url)
等到某个请求,url或者predicate只有有一个不为空,默认等待时间是30s
|
||
Request |
waitForRequest(String url,
Predicate<Request> predicate,
int timeout)
等到某个请求,url或者predicate只有有一个不为空
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
|
||
Response |
waitForResponse(Predicate<Response> predicate)
等到某个请求,默认等待的时间是30s
|
||
Response |
waitForResponse(String url)
等到某个请求,默认等待的时间是30s
|
||
Response |
waitForResponse(String url,
Predicate<Response> predicate)
等到某个请求,url或者predicate只有有一个不为空,默认等待的时间是30s
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
|
||
Response |
waitForResponse(String url,
Predicate<Response> predicate,
int timeout)
等到某个请求,url或者predicate只有有一个不为空
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
|
||
ElementHandle |
waitForSelector(String selector)
等待指定的选择器匹配的元素出现在页面中,如果调用此方法时已经有匹配的元素,那么此方法立即返回。
|
||
ElementHandle |
waitForSelector(String selector,
WaitForSelectorOptions options)
等待指定的选择器匹配的元素出现在页面中,如果调用此方法时已经有匹配的元素,那么此方法立即返回。
|
||
JSHandle |
waitForXPath(String xpath)
等待指定的xpath匹配的元素出现在页面中,如果调用此方法时已经有匹配的元素,那么此方法立即返回。
|
||
JSHandle |
waitForXPath(String xpath,
WaitForSelectorOptions options)
等待指定的xpath匹配的元素出现在页面中,如果调用此方法时已经有匹配的元素,那么此方法立即返回。
|
||
Map<String,Worker> |
workers()
该方法返回所有与页面关联的 WebWorkers
|
addListener, addListener, emit, getListenerCount, removeListenerpublic Page(CDPSession client, Target target, boolean ignoreHTTPSErrors, TaskQueue<String> screenshotTaskQueue)
public void onClose(EventHandler<Object> handler)
handler - 要提供的处理器public void onConsole(EventHandler<ConsoleMessage> handler)
public void onDialg(EventHandler<Dialog> handler)
public void onError(EventHandler<Error> handler)
public void onFrameattached(EventHandler<Frame> handler)
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
handler - 事件处理器public void onFramedetached(EventHandler<Frame> handler)
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
handler - 事件处理器public void onFramenavigated(EventHandler<Frame> handler)
注意不要在这个事件内直接调用Frame中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
handler - 事件处理器public void onLoad(EventHandler<Object> handler)
public void onMetrics(EventHandler<PageMetrics> handler)
public void onPageerror(EventHandler<RuntimeException> handler)
public void onPopup(EventHandler<Error> handler)
public void onRequest(EventHandler<Request> handler)
public void onRequestfailed(EventHandler<Request> handler)
public void onRequestfinished(EventHandler<Request> handler)
public void onResponse(EventHandler<Response> handler)
public void onWorkercreated(EventHandler<Worker> handler)
注意不要在这个事件内直接调用Worker中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
handler - 事件处理器public void onWorkerdestroyed(EventHandler<Worker> handler)
注意不要在这个事件内直接调用Worker中会暂停线程的方法
不然的话,websocket的read线程会被阻塞,程序无法正常运行
可以在将这些方法的调用移动到另外一个线程中
handler - 事件处理器public ElementHandle $(String selector)
selector - 选择器public List<ElementHandle> $$(String selector)
selector - 选择器public Object $$eval(String selector, String pageFunction, PageEvaluateType type, Object... args)
selector - 一个框架选择器pageFunction - 在浏览器实例上下文中要执行的方法type - 字符串代表的是方法还是单纯的字符串args - 要传给 pageFunction 的参数。(比如你的代码里生成了一个变量,在页面中执行方法时需要用到,可以通过这个 args 传进去)public Object $eval(String selector, String pageFunction, PageEvaluateType type, Object... args)
selector - 选择器pageFunction - 在浏览器实例上下文中要执行的方法type - 具体类型args - 要传给 pageFunction 的参数。(比如你的代码里生成了一个变量,在页面中执行方法时需要用到,可以通过这个 args 传进去)public List<ElementHandle> $x(String expression)
expression - XPath表达式。public ElementHandle addScriptTag(ScriptTagOptions options) throws IOException
options - 可选参数IOException - 异常public ElementHandle addStyleTag(StyleTagOptions options) throws IOException
options - link标签IOException - 异常public void authenticate(Credentials credentials)
传 null 禁用认证。
credentials - 验证信息public void bringToFront()
public Browser browser()
public BrowserContext browserContext()
public void click(String selector, boolean isBlock) throws InterruptedException, ExecutionException
selector - 选择器isBlock - 是否是阻塞的,不阻塞的时候可以配合waitFor方法使用InterruptedException - 异常ExecutionException - 异常public void click(String selector) throws InterruptedException, ExecutionException
selector - 选择器InterruptedException - 异常ExecutionException - 异常public void click(String selector, ClickOptions options, boolean isBlock) throws InterruptedException, ExecutionException
selector - 选择器options - 参数isBlock - 是否是阻塞的,为true代表阻塞,为false代表不阻塞,不阻塞可以配合waitForNavigate等方法使用InterruptedException - 异常ExecutionException - 异常public void close()
throws InterruptedException
InterruptedException - 异常public void close(boolean runBeforeUnload)
throws InterruptedException
注意 如果 runBeforeUnload 设置为true,可能会弹出一个 beforeunload 对话框。 这个对话框需要通过页面的 'dialog' 事件手动处理
runBeforeUnload - 默认 false. 是否执行 before unloadInterruptedException - 异常public String screenshot(ScreenshotOptions options) throws IOException
截图
备注 在OS X上 截图需要至少1/6秒。查看讨论:https://crbug.com/741689。options - 截图选项IOException - 异常public String screenshot(String path) throws IOException
path - 截图文件全路径IOException - 异常public List<String> select(String selector, List<String> values)
selector - 要查找的选择器values - 查找的配置项。如果选择器有多个属性,所有的值都会查找,否则只有第一个元素被找到public String title()
public void setBypassCSP(boolean enabled)
注意 CSP 发生在 CSP 初始化而不是评估阶段。也就是说应该在导航到这个域名前设置
enabled - 是否绕过页面的安全政策public void setCacheEnabled(boolean enabled)
enabled - 设置缓存的 enabled 状态public void setContent(String html)
html - 分派给页面的HTML。public void setContent(String html, PageNavigateOptions options)
html - 分派给页面的HTML。options - timeout 加载资源的超时时间,默认值为30秒,传入0禁用超时. 可以使用 page.setDefaultNavigationTimeout(timeout) 或者 page.setDefaultTimeout(timeout) 方法修改默认值
waitUntil HTML设置成功的标志事件, 默认为 load。 如果给定的是一个事件数组,那么当所有事件之后,给定的内容才被认为设置成功。 事件可以是:
load - load事件触发后,设置HTML内容完成。
domcontentloaded - DOMContentLoaded 事件触发后,设置HTML内容完成。
networkidle0 - 不再有网络连接时(至少500毫秒之后),设置HTML内容完成
networkidle2 - 只剩2个网络连接时(至少500毫秒之后),设置HTML内容完成public List<Cookie> cookies(List<String> urls)
urls - 指定的url集合public void setCookie(List<CookieParam> cookies) throws IllegalAccessException, IntrospectionException, InvocationTargetException
public void setDefaultNavigationTimeout(int timeout)
goTo(String)
$goTo(String, PageNavigateOptions,boolean)
$goBack(PageNavigateOptions)
$goForward(PageNavigateOptions)
$reload(PageNavigateOptions)
$waitForNavigation()timeout - 超时时间public void setExtraHTTPHeaders(Map<String,String> headers)
headers - 每个 HTTP 请求都会带上这些请求头。值必须是字符串public void setGeolocation(double longitude,
double latitude,
int accuracy)
longitude - Latitude between -90 and 90.latitude - Longitude between -180 and 180.accuracy - Optional non-negative accuracy value.public void setGeolocation(double longitude,
double latitude)
longitude - 纬度 between -90 and 90.latitude - 经度 between -180 and 180.public void setJavaScriptEnabled(boolean enabled)
enabled - 是否启用jspublic void setOfflineMode(boolean enabled)
enabled - 设置 true, 启用离线模式。public void setRequestInterception(boolean value)
value - 是否启用请求拦截器public static Page create(CDPSession client, Target target, boolean ignoreHTTPSErrors, Viewport viewport, TaskQueue<String> screenshotTaskQueue) throws ExecutionException, InterruptedException
client - 与页面通讯的客户端target - 目标ignoreHTTPSErrors - 是否忽略https错误viewport - 视图screenshotTaskQueue - 截图队列ExecutionException - 并发异常InterruptedException - 线程打断异常public void setViewport(Viewport viewport) throws ExecutionException, InterruptedException
注意 在大部分情况下,改变 viewport 会重新加载页面以设置 isMobile 或者 hasTouch
viewport - 设置的视图ExecutionException - 并发异常InterruptedException - 线程被打断异常protected void initialize()
public String content()
public Response goTo(String url, boolean isBlock) throws InterruptedException
导航到指定的url,可以配置是否阻塞,可以配合下面这个方法使用,但是不限于这个方法
waitForResponse(String)
因为如果不阻塞的话,页面在加载完成时,waitForResponse等waitFor方法会接受不到结果而抛出超时异常url - 导航的地址isBlock - true代表阻塞InterruptedException - 打断异常public Response goTo(String url, PageNavigateOptions options) throws InterruptedException
导航到指定的url,因为goto是java的关键字,所以就采用了goTo方法名
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
目标地址无效
超时
主页面不能加载
url - urloptions: - timeout 跳转等待时间,单位是毫秒, 默认是30秒, 传 0 表示无限等待。可以通过page.setDefaultNavigationTimeout(timeout)方法修改默认值
waitUntil 满足什么条件认为页面跳转完成,默认是 load 事件触发时。指定事件数组,那么所有事件触发后才认为是跳转完成。事件包括:
load - 页面的load事件触发时
domcontentloaded - 页面的 DOMContentLoaded 事件触发时
networkidle0 - 不再有网络连接时触发(至少500毫秒后)
networkidle2 - 只有2个网络连接时触发(至少500毫秒后)
referer Referer header value. If provided it will take preference over the referer header value set by page.setExtraHTTPHeaders().
InterruptedException - 异常public Response goTo(String url, PageNavigateOptions options, boolean isBlock) throws InterruptedException
导航到指定的url,因为goto是java的关键字,所以就采用了goTo方法名
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
目标地址无效
超时
主页面不能加载
url - urloptions: - timeout 跳转等待时间,单位是毫秒, 默认是30秒, 传 0 表示无限等待。可以通过page.setDefaultNavigationTimeout(timeout)方法修改默认值
waitUntil 满足什么条件认为页面跳转完成,默认是 load 事件触发时。指定事件数组,那么所有事件触发后才认为是跳转完成。事件包括:
load - 页面的load事件触发时
domcontentloaded - 页面的 DOMContentLoaded 事件触发时
networkidle0 - 不再有网络连接时触发(至少500毫秒后)
networkidle2 - 只有2个网络连接时触发(至少500毫秒后)
referer Referer header value. If provided it will take preference over the referer header value set by page.setExtraHTTPHeaders().
isBlock - 是否阻塞,不阻塞代表只是发导航命令出去,并不等待导航结果,同时也不会抛异常InterruptedException - 打断异常public Response goTo(String url) throws InterruptedException
以下情况此方法将报错:
发生了 SSL 错误 (比如有些自签名的https证书).
目标地址无效
超时
主页面不能加载
url - 导航到的地址. 地址应该带有http协议, 比如 https://.InterruptedException - 打断异常public void deleteCookie(List<DeleteCookiesParameters> cookies) throws IllegalAccessException, IntrospectionException, InvocationTargetException
cookies - 指定删除的cookiesIllegalAccessException - 异常IntrospectionException - 异常InvocationTargetException - 异常public void emulate(Device options) throws ExecutionException, InterruptedException
options - Device 模拟器枚举类InterruptedException - 线程被打断异常ExecutionException - 并发异常public void setUserAgent(String userAgent)
userAgent - userAgent的值public void emulateMediaType(String type)
type - css媒体类型public void tap(String selector, boolean isBlock)
selector - 要点击的元素的选择器。如果有多个匹配的元素,点击第一个isBlock - 是否阻塞,如果是false,那么将在另外的线程中完成,可以配合waitFor方法public void tap(String selector)
selector - 要点击的元素的选择器。如果有多个匹配的元素,点击第一个public void emulateTimezone(String timezoneId)
timezoneId - 时区idpublic void emulateVisionDeficiency(VisionDeficiency type)
type - 视力障碍类型public void evaluateOnNewDocument(String pageFunction, Object... args)
evaluateOnNewDocument(String, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串pageFunction - 要执行的字符串args - 如果是 Javascript 函数的话,对应函数上的参数public void evaluateOnNewDocument(String pageFunction, PageEvaluateType type, Object... args)
当你的js代码为函数时,type=PageEvaluateType.FUNCTION
当你的js代码为字符串时,type=PageEvaluateType.STRING
pageFunction - js代码type - 一般为PageEvaluateType#FUNCTIONargs - 当你js代码是函数时,你的函数的参数public void exposeFunction(String name, Function<List<?>,Object> puppeteerFunction) throws InterruptedException, ExecutionException
name - 挂载到window对象的方法名puppeteerFunction - 调用name方法时实际执行的方法ExecutionException - 异常InterruptedException - 异常public void focus(String selector)
selector - 要给焦点的元素的选择器selector。如果有多个匹配的元素,焦点给第一个元素。public Response goBack()
public Response goBack(PageNavigateOptions options)
options 的 referer参数不用填,填了也用不上
options 导航配置,可选值:
otimeout 跳转等待时间,单位是毫秒, 默认是30秒, 传 0 表示无限等待。可以通过page.setDefaultNavigationTimeout(timeout)方法修改默认值
owaitUntil 满足什么条件认为页面跳转完成,默认是load事件触发时。指定事件数组,那么所有事件触发后才认为是跳转完成。事件包括:
oload - 页面的load事件触发时
odomcontentloaded - 页面的DOMContentLoaded事件触发时
onetworkidle0 - 不再有网络连接时触发(至少500毫秒后)
onetworkidle2 - 只有2个网络连接时触发(至少500毫秒后)
options - 见上面注释public Response goForward()
public Response goForward(PageNavigateOptions options)
options 的 referer参数不用填,填了也用不上
options - 可以看goTo(String,PageNavigateOptions,boolean)方法介绍public void hover(String selector) throws ExecutionException, InterruptedException
selector - 要hover的元素的选择器。如果有多个匹配的元素,hover第一个。ExecutionException - 并发异常InterruptedException - 打断异常public boolean isClosed()
public Metrics metrics() throws IllegalAccessException, IntrospectionException, InvocationTargetException
IllegalAccessException - 异常IntrospectionException - 异常InvocationTargetException - 异常public void pdf(String path) throws IOException
注意 目前仅支持无头模式的 Chrome
path - pdf存放的路径IOException - 异常public byte[] pdf(PDFOptions options) throws IOException
注意 目前仅支持无头模式的 Chrome
options - 选项IOException - 异常public void setDefaultTimeout(int timeout)
goTo(String)
$goTo(String, PageNavigateOptions,boolean)
$goBack(PageNavigateOptions)
$goForward(PageNavigateOptions)
$reload(PageNavigateOptions)
$waitForNavigation()timeout - 超时时间public JSHandle queryObjects(JSHandle prototypeHandle)
prototypeHandle - 原型处理器public Response reload(PageNavigateOptions options) throws ExecutionException, InterruptedException
options - 与$goTo(String, PageNavigateOptions,boolean)中的options是一样的配置ExecutionException - 并发异常InterruptedException - 线程被打断异常public Response waitForNavigation()
比如你在在代码中使用了Page.click()方法,引起了页面跳转 注意 通过 History API 改变地址会认为是一次跳转。
public Response waitForNavigation(PageNavigateOptions options)
比如你在在代码中使用了Page.click()方法,引起了页面跳转 注意 通过 History API 改变地址会认为是一次跳转。
options - PageNavigateOptionspublic Object evaluate(String pageFunction, Object... args)
evaluate(String, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串pageFunction - 要执行的字符串args - 如果是 Javascript 函数的话,对应函数上的参数public Object evaluate(String pageFunction, PageEvaluateType type, Object... args)
添加一个方法,在以下某个场景被调用
页面导航完成后
页面的iframe加载或导航完成。这种场景,指定的函数被调用的上下文是新加载的iframe。
指定的函数在所属的页面被创建并且所属页面的任意 script 执行之前被调用。常用于修改页面js环境,比如给 Math.random 设定种子pageFunction - 要在页面实例上下文中执行的方法type - 是方法字符串还是普通字符串args - 要在页面实例上下文中执行的方法的参数public JSHandle evaluateHandle(String pageFunction, Object... args)
evaluateHandle(String, PageEvaluateType, Object...)的简化版,自动判断参数pageFunction是 Javascript 函数还是 Javascript 的字符串pageFunction - 要执行的字符串args - 如果是 Javascript 函数的话,对应函数上的参数public JSHandle evaluateHandle(String pageFunction, PageEvaluateType type, Object... args)
pageFunction - 要在页面实例上下文中执行的方法type - 是方法字符串还是普通字符串args - 要在页面实例上下文中执行的方法的参数public void emulateMedia(String type)
type - css媒体类型public void emulateMediaFeatures(List<MediaFeature> features)
public JSHandle waitFor(String selectorOrFunctionOrTimeout) throws InterruptedException
如果 selectorOrFunctionOrTimeout 是 string, 那么认为是 css 选择器或者一个xpath, 根据是不是'//'开头, 这时候此方法是 page.waitForSelector 或 page.waitForXPath的简写
如果 selectorOrFunctionOrTimeout 是 function, 那么认为是一个predicate,这时候此方法是page.waitForFunction()的简写
如果 selectorOrFunctionOrTimeout 是 number, 那么认为是超时时间,单位是毫秒,返回的是Promise对象,在指定时间后resolve
否则会报错
selectorOrFunctionOrTimeout - 选择器, 方法 或者 超时时间InterruptedException - 异常public JSHandle waitFor(String selectorOrFunctionOrTimeout, WaitForSelectorOptions options, Object... args) throws InterruptedException
如果 selectorOrFunctionOrTimeout 是 string, 那么认为是 css 选择器或者一个xpath, 根据是不是'//'开头, 这时候此方法是 page.waitForSelector 或 page.waitForXPath的简写
如果 selectorOrFunctionOrTimeout 是 function, 那么认为是一个predicate,这时候此方法是page.waitForFunction()的简写
如果 selectorOrFunctionOrTimeout 是 number, 那么认为是超时时间,单位是毫秒,返回的是Promise对象,在指定时间后resolve
否则会报错
selectorOrFunctionOrTimeout - 选择器, 方法 或者 超时时间options - 可选的等待参数args - 传给 pageFunction 的参数InterruptedException - 打断异常public Future<FileChooser> waitForFileChooser()
public Future<FileChooser> waitForFileChooser(int timeout)
timeout - 等待时间public JSHandle waitForFunction(String pageFunction) throws InterruptedException
pageFunction - 要在浏览器实例上下文执行的方法InterruptedException - 打断异常public Request waitForRequest(Predicate<Request> predicate) throws InterruptedException
predicate - 等待的请求InterruptedException - 异常public Request waitForRequest(String url) throws InterruptedException
url - 等待的请求InterruptedException - 异常public Request waitForRequest(String url, Predicate<Request> predicate, int timeout) throws InterruptedException
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
url - 等待的请求predicate - 方法timeout - 超时时间InterruptedException - 异常public Response waitForResponse(Predicate<Response> predicate) throws InterruptedException
predicate - 判断具体某个请求InterruptedException - 异常public Response waitForResponse(String url) throws InterruptedException
url - 等待的请求InterruptedException - 异常public Response waitForResponse(String url, Predicate<Response> predicate) throws InterruptedException
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
url - 等待的请求predicate - 方法InterruptedException - 异常public Response waitForResponse(String url, Predicate<Response> predicate, int timeout) throws InterruptedException
当url不为空时, type = PageEvaluateType.STRING
当predicate不为空时, type = PageEvaluateType.FUNCTION
url - 等待的请求predicate - 方法timeout - 超时时间InterruptedException - 异常public ElementHandle waitForSelector(String selector) throws InterruptedException
selector - 要等待的元素选择器InterruptedException - 打断异常public ElementHandle waitForSelector(String selector, WaitForSelectorOptions options) throws InterruptedException
selector - 要等待的元素选择器options - 可选参数InterruptedException - 打断异常public JSHandle waitForXPath(String xpath) throws InterruptedException
xpath - 要等待的元素的xpathInterruptedException - 打断异常public JSHandle waitForXPath(String xpath, WaitForSelectorOptions options) throws InterruptedException
xpath - 要等待的元素的xpathoptions - 可选参数InterruptedException - 打断异常protected CDPSession getClient()
protected void setClient(CDPSession client)
protected void setClosed(boolean closed)
public Mouse mouse()
public Target target()
public Touchscreen touchscreen()
public Tracing tracing()
public Accessibility accessibility()
public void type(String selector, String text) throws InterruptedException
要点击特殊按键,比如 Control 或 ArrowDown,用 keyboard.press
selector - 要输入内容的元素选择器。如果有多个匹配的元素,输入到第一个匹配的元素。text - 要输入的内容InterruptedException - 异常public void type(String selector, String text, int delay) throws InterruptedException
要点击特殊按键,比如 Control 或 ArrowDown,用 keyboard.press
selector - 要输入内容的元素选择器。如果有多个匹配的元素,输入到第一个匹配的元素。text - 要输入的内容delay - 每个字符输入的延迟,单位是毫秒。默认是 0。InterruptedException - 异常public boolean getJavascriptEnabled()
public Keyboard keyboard()
public Viewport viewport()
public Coverage coverage()
Copyright © 2020. All rights reserved.