一、Puppeteer切换浏览器TAB页

1、browser.pages()

二、上手实例Demo

  功能测试:打开www.ly.com首页,定位搜索"苏州",获取新打开页面上的搜索结果的第一个名称,并在终端输出打印出来。下面列举了两种方法供参考。

 const puppeteer = require('puppeteer');
async function tab() {
//创建一个Browser浏览器实例,并设置相关参数
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
args: ['--start-maximized'],
ignoreDefaultArgs: ['--enable-automation']
});
//创建一个Page实例
const page = await browser.newPage();
await page.goto("https://www.ly.com", {
waitUntil: 'networkidle2'
});
const searchText = await page.$('#pt__search_text');
await searchText.type('苏州');
const searchBtn = await page.$('#pt__search_btn');
await searchBtn.click();
await page.waitFor(3000);
//方法一:browser.pages(),可以获取所有打开的Page对象,可以通过遍历或筛选找到自己想获取的Page对象
const newPage = (await browser.pages())[2];
//方法二:通过browser.waitForTarget获取target
const target = await browser.waitForTarget(t => t.url().includes('https://so.ly.com/hot'));
const newPage = await target.page();
//获取搜索结果列表页第一个标题的值,并输出终端
const newPageText = await newPage.$eval('div.search_list > ul > li:nth-child(1) > div > a > h3', ele => ele.innerText);
console.log('newPageText:' + newPageText);
//关闭浏览器
await browser.close();
}
tab();

  注意点:方法一中browser.pages()定位页面时,遍历时注意页面是从0开始计数的。所以定位的是第2个页面。如下图所示。

  以上参考代码运行结果如下

最新文章

  1. Vue.js介绍样码
  2. JavaSript模块规范 - AMD规范与CMD规范介绍(转)
  3. Bootstrap结合BootstrapTable的使用,分为两种模试显示列表。 自适应表格
  4. UI2_UITableViewDelete
  5. 【原创】解决国内Android SDK无法更新问题更新
  6. (转)PHP 的 __FILE__ 常量
  7. c3p0数据源定义
  8. php isset — 检测变量是否设置 foreach循环运用
  9. VS2010+QT4.8.5 +FastReport教程
  10. nginx 防火墙、权限问题
  11. beta冲刺1
  12. Java虚拟机学习-对象的创建
  13. 洛谷 P1538 迎春舞会之数字舞蹈
  14. Linux学习之CentOS(一)--CentOS6.4环境搭建
  15. Zookeeper安装使用及JavaAPI使用
  16. 【转】JS常用函数整合库 lutils
  17. linux系统安装jdk详细配置
  18. Excel根据人名匹配得到编号
  19. python3 80行代码实现贪吃蛇
  20. The YubiKey NEO -- Smartcard features

热门文章

  1. vue项目中使用bpmn-为节点添加颜色
  2. 将Spring Boot应用程序注册成为系统服务
  3. 【手把手教你】win10 虚拟机 VMware Workstation Pro 15下安装Ubuntu 19.04
  4. 小白的MyBatis逆向工程
  5. visual stdio 2012快捷键
  6. Netty(六):NioServerSocketChannel源码解析
  7. 简要理解CommonJS规范
  8. [USACO1.3]虫洞wormhole
  9. SQL 文件导入数据库
  10. thinkphp-getshell Bypass