搜索await page.waitForSelector(allResultsSelector);

/**
 * Copyright 2017 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @fileoverview Search developers.google.com/web for articles tagged
 * "Headless Chrome" and scrape results from the results page.
 */

‘use strict‘;

const puppeteer = require(‘puppeteer‘);

(async() => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto(‘https://developers.google.com/web/‘);

  // Type into search box.---输入文字 还有提换方法  //await page.focus(‘#kw‘);  //await page.keyboard.sendCharacter(‘狗‘);
  await page.type(‘#searchbox input‘, ‘Headless Chrome‘);

  // Wait for suggest overlay to appear and click "show all results".
  const allResultsSelector = ‘.devsite-suggest-all-results‘;//等待元素加载
  await page.waitForSelector(allResultsSelector);
  await page.click(allResultsSelector);

  // Wait for the results page to load and display the results.
  const resultsSelector = ‘.gsc-results .gsc-thumbnail-inside a.gs-title‘;
  await page.waitForSelector(resultsSelector);

  // Extract the results from the page.
  const links = await page.evaluate(resultsSelector => {
    const anchors = Array.from(document.querySelectorAll(resultsSelector));
    return anchors.map(anchor => {
      const title = anchor.textContent.split(‘|‘)[0].trim();
      return `${title} - ${anchor.href}`;
    });
  }, resultsSelector);
  console.log(links.join(‘\n‘));

  await browser.close();
})();

原文地址:https://www.cnblogs.com/justart/p/9749805.html

时间: 2024-11-03 15:35:32

搜索await page.waitForSelector(allResultsSelector);的相关文章

012-ant design pro advanced UI 测试

一.概述 原文地址:https://pro.ant.design/docs/ui-test-cn UI 测试是项目研发流程中的重要一环,有效的测试用例可以梳理业务需求,保证研发的质量和进度,让工程师可以放心的重构代码和新增功能. Ant Design Pro 封装了一套简洁易用的 React 单元测试和 E2E 测试方案,在项目根目录运行以下命令就能运行测试用例. npm run test:all # 执行所有测试 二.详细 2.1.单元测试 单元测试用于测试 React UI 组件的表现.我们

puppeteer:官方出品的chrome浏览器自动化测试工具

puppeteer发布应该有一段时间了,这两天正好基于该工具写了一些自动化解决方案,在这里抛砖引给大家介绍一下. 官方描述: Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full

ant design pro (十二)advanced UI 测试

一.概述 原文地址:https://pro.ant.design/docs/ui-test-cn UI 测试是项目研发流程中的重要一环,有效的测试用例可以梳理业务需求,保证研发的质量和进度,让工程师可以放心的重构代码和新增功能. Ant Design Pro 封装了一套简洁易用的 React 单元测试和 E2E 测试方案,在项目根目录运行以下命令就能运行测试用例. npm run test:all # 执行所有测试 二.详细 2.1.单元测试 单元测试用于测试 React UI 组件的表现.我们

【基于Puppeteer前端自动化框架】【二】PO模式,断言(如何更简便逻辑的写测试代码)

一.概要 前面介绍了Puppeteer+jest+TypeScript做UI自动化,但是这知识基础的,我们实现自动化要考虑的很多,比如PO模式,比如配置文件,比如断言等等.下面就来一一实现我是怎么用puppeteer 做UI自动化的 二.断言 (一)需要依赖的安装包 依赖包 命令 Jest npm install jest --save-dev @types/jest npm install @types/jest --save-dev expect-puppeteer npm install

puppeteer的使用

1. 2. // puppeteer元素基本操作-输入文本与元素点击 const puppeteer = require('puppeteer') async function fun() { const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 } }) const page = await browser.newPage() await pag

puppeteer安装以及demo

安装node 利用npm安装puppeteer(忽略安装chromium脚本,待会手动安装) npm install puppeteer --ignore-scripts   vim path/to/puppeteer/node_modules/puppeteer/utils/ChromiumDownloader.js 找到方法downloadFile并打印url 得到下载chromium的地址 然后手动去下载 将下载的文件存放至自定义的web服务器中 更改之前那个url的地址 指向自定义服务器

使用Puppeteer进行数据抓取(四)——图片下载

大多数情况下,图片获取并不是很困难的事情,获取图片的url,然后模拟浏览器请求即可.但是,有的时候这种方法往往无法生效,常见的情形有: 动态图片,每次获取都是一个新的,例如图片验证码,重新获取时是一个新的验证码图片,已经失去了效果了. 动态上下文,有的网站为了反爬虫,获取图片时要加上其动态生成的cookie才行. 这些情况下,使用puppeteer驱动chrome浏览器能看到图片,但获取url后单独请求时,要么获取到的图片无效,要么获取不到图片.本文这里就简单的介绍下一些十分通用且有效的下载这些

Puppeteer自动化批量上传抖音视频

前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =require('puppeteer'); const fs = require('fs'); var arry=[]; fs.readdir('video',function(err,files){ if(err){ console.log(err); } else{ (function getfi

将自己在CSDN上的文章下载到本地并上传到掘金

CSDN 算是一个老牌技术网站了,很多喜欢写文章的人,一开始都是在 CSDN上发布,但是可能由于某些原因,有的人想把自己在 CSDN上的文章放到其他的网站上(嗯,比如掘金),但是由于在 CSDN上发布的文章数量很多,一篇篇复制粘贴下来理论上是可行的,就是手酸了点. 不过,作为技术型体力劳动者人才,重复一种动作几十甚至上百遍未免有点丢失 biger,想起前段时间我花费了 大量时间 翻译的 Puppeteer,至今还没体现出其价值来,于是决定就用它了. 本文的可运行示例代码已经上传到 github了