代码拉取完成,页面将自动刷新
const puppeteer = require('puppeteer')
let browser
let page
let screen = {
width: 1920,
height: 1080
}
beforeAll(async () => {
browser = await puppeteer.launch({
args: ['--start-maximized'], //浏览器窗口最大化
headless: false, //开启或关闭无头模式
ignoreHTTPSErrors: true,
slowMo: 250, //slow down by 250ms, 减慢运行的速度,更好的看清楚操作
timeout: 15000,
ignoreHTTPSErrors: true, //若访问的是https页面,则忽略https错误
devtools: false //打开或关闭浏览器的开发者模式
})
page = await browser.newPage()
page.setViewport({
width: screen.width,
height: screen.height //当前屏幕的长和宽
})
await page.setJavaScriptEnabled(true)
})
afterAll(async () => {
await browser.close()
})
test('1. 打开百度; 2. 输入关键字搜索', async () => {
//声明是异步函数
await page.goto('https://www.baidu.com', {
waitUntil: 'networkidle2' //等待网络状态为空闲的时候才继续执行
})
//添加assertion,验证百度的标题是否正确
const pageTitle = await page.title()
await expect(pageTitle).toMatch('百度一下,你就知道')
await page.focus('#kw')
await page.type('#kw', '特斯拉')
await page.click('#su')
await page.waitForSelector('h3.t a')
const list = await page.$$eval('h3.t a', elements => {
const ctn = elements.map(v => {
return v.innerText.replace(/\s/g, '')
})
return ctn
})
console.log(list)
let matchCount = 0
for (var i = 0; i < list.length; i++) {
if (list[i].indexOf('特斯拉') !== -1 || list[i].indexOf('Tesla') !== -1) {
matchCount++
}
}
// 检索结果中至少有5条和关键字匹配
await expect(matchCount).toBeGreaterThanOrEqual(5)
// 截图留存
await page.screenshot({
path: 'baidu-tesla.png',
type: 'png',
fullPage: true
})
}, 60000) //设置timeout时间为60000 ms
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。