page - puppeteerApp & chrome extension
接口和谷歌公司的puppeteer库中的Page类相同。
page.title()
获取当前app的名称,如微信
Returns: *
- {Promise<string>} `
page.url()
获取当前app的package name
Returns: *
- {Promise<string>} , 如com.tencent.mm/android.widget.FrameLayout
page.goto(activityFullName) ⇒ *
跳转到指定app的activity
Returns: *
- {Promise<void>}
Param | Type |
---|---|
activityFullName | string |
page.$(selector) ⇒ *
返回dom元素,如果没有找到则返回null。和document.querySelector 作用相同 对象是克隆的,不是原始对象。主要用于获取dom元素的属性和内容。
Returns: *
- {Promise<any>}
Param | Type |
---|---|
selector | string |
Example
let ele = await page.$('#bkk');
page.$$(selector) ⇒ *
返回dom元素,如果没有找到则返回null。和document.querySelectorAll 作用相同 对象是克隆的,不是原始对象。主要用于获取dom元素的属性和内容。
Returns: *
- {Promise<any[]>}
Param | Type |
---|---|
selector | string |
Example
let eles = await page.$$('#bkk');
page.addScriptTag(options) ⇒ *
添加脚本,js会添加到body中
Returns: *
- {Promise<void>}
Param | Type | Description |
---|---|---|
options | Object | |
[options.url] | string | 脚本的URL |
[options.content] | string | 脚本的内容 |
[options.type] | string | 脚本的类型, script.type = options.type; |
Example
await page.addScriptTag({ url: 'https://code.jquery.com/jquery-3.2.1.min.js' });
await page.addScriptTag({ content: 'window.alert("Injected script")' });
await page.addScriptTag({
content: 'window.alert("Injected script")',
onload: 'console.log("load")'
});
page.addStyleTag(options) ⇒ *
添加样式表,css会添加到head中
Returns: *
- {Promise<void>}
Param | Type | Description |
---|---|---|
options | Object | |
[options.url] | string | 样式表的URL |
[options.content] | string | 样式表的内容 |
Example
await page.addStyleTag({ url: 'https://fonts.googleapis.com/css?family=Roboto' });
await page.addStyleTag({ content: 'body { background-color: white; }' });
await page.addStyleTag({
content: 'body { background-color: white; }',
onload: 'console.log("load")'
});
page.click(selector, [options]) ⇒ *
点击指定元素
Returns: *
- {Promise<void>}
Param | Type | Default |
---|---|---|
selector | string | |
[options] | ClickOptions | { clickCount: 1, delay: 100 } |
Example
await page.click('#bkk');
page.type(selector, text, [options]) ⇒ Promise.<void>
在页面上指定的元素中输入文本。
Returns: Promise.<void>
- 返回一个 Promise,表示输入操作完成。
Param | Type | Default | Description |
---|---|---|---|
selector | string | 要输入内容的元素选择器。如果有多个匹配的元素,输入到第一个匹配的元素。 | |
text | string | 要输入的文本 | |
[options] | Object | { delay: 0, autoCorrect: true } | 可选参数 |
[options.delay] | number | 0 | 输入文本之间的延迟时间(毫秒)。默认为0。 |
[options.autoCorrect] | boolean | true | 指定是否自动纠正输入的文本。默认为 true。 |
Example
await page.type('#bkk', 'test.844.ai');
page.waitForSelector(selector, options) ⇒ Promise.<AppElement>
要等待的元素选择器 等待指定的选择器匹配的元素出现在页面中,如果调用此方法时已经有匹配的元素,那么此方法立即返回。 如果指定的选择器在超时时间后扔不出现,此方法会报错。
Returns: Promise.<AppElement>
- 返回一个 Promise,resolve 后返回一个 AppElement 对象。
Param | Type | Description |
---|---|---|
selector | string | 要等待的元素选择器。和document.querySelector()的参数一样。css选择器语法格式;#id,.class,[attr=value],=文本, >=文 |
本 | ||
options | Object | 可选参数: |
options.timeout | number | 超时时间,单位毫秒,默认30000 |
options.pollingInterval | number | 轮询间隔时间,单位毫秒,默认100 |
Example
await page.waitForSelector('#bkk');
await page.waitForSelector('#bkk', { timeout: 10000 });
await page.waitForSelector('.android.view.View[text="爱读书"]')
await page.waitForSelector('.View[text="爱读书"]');
let element = await page.waitForSelector('.View[text="爱读书"]');
await element.click();
page.waitForFunction(pageFunction, [options], ...args) ⇒ *
等待pageFunction中的返回值为true,如果超时则报错。 waitForFunction 可以用来监控页面的大小变化,屏幕旋转。
Param | Type | Default | Description |
---|---|---|---|
pageFunction | * | 要在页面实例上下文中执行的方法 | |
[options] | Object | { timeout: 30000, pollingInterval: 100 } | |
...args | * |
Example
await page.waitForFunction(()=> Device.rotation() !=0 );
page.evaluate(fnOrString, ...args) ⇒ *
在页面上下文中执行指定的方法,并返回执行结果。 把同步或异步的方法都包装一次,按照跨设备处理。减少跨设备中的逻辑代码。如:android app中WebViewInterceptor的webView.evaluateJavascript
Returns: *
- {Promise<any>} 返回一个 Promise,resolve 后返回 fnOrString 的执行结果。
Param | Type | Description |
---|---|---|
fnOrString | function | string | 要在页面实例上下文中执行的方法 |
...args | any | 要传递给fnOrString的参数 |
Example
await page.evaluate(() => document.title);
await page.evaluate((a, b) => a + b, 1, 2);
await page.evaluate('document.title');
await page.evaluate('function() { return document.title }');
await page.evaluate(() => Promise.resolve(8 * 7));
page.home
回到app中webview的默认页面;默认等待200毫秒
Example
await page.home();