Node.js 中如何使用 Puppeteer 进行 Web 自动化测试
Web 自动化测试是一种常见的测试方式,可以模拟人的操作行为,自动化执行测试用例,提高测试效率。Node.js 提供了 Puppeteer 这个工具,可以帮助我们轻松地实现 Web 自动化测试。
Puppeteer 是一个 Node.js 库,它提供了一个高级 API,可以直接在 Chrome 或者 Chromium 基础上进行 DOM 操作,以及模拟用户操作等。Puppeteer 的主要功能包括:
- 控制 Chrome 或者 Chromium 浏览器
- 运行 JavaScript,并对页面进行操作
- 访问网络资源
- 执行 Chrome DevTools 命令
下面我们来详细介绍如何使用 Puppeteer 进行 Web 自动化测试。
安装 Puppeteer
首先需要安装 Puppeteer。在命令行中输入以下命令:
npm install puppeteer
这样就安装好了 Puppeteer,然后我们就可以调用它提供的 Python API 进行 Web 自动化测试了。
启动浏览器
在使用 Puppeteer 进行 Web 自动化测试之前,需要启动浏览器。可以通过以下代码启动浏览器:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); })();
在这个例子中,我们使用了 async/await 异步编程方式,首先通过 launch() 方法启动浏览器,然后通过 newPage() 方法创建一个新的页面,最后我们得到了一个 browser 对象和一个 page 对象。
浏览器设置
可以使用 setViewport() 方法设置浏览器视口大小:
await page.setViewport({ width: 1280, height: 800 });
可以使用 setUserAgent() 方法设置 User-Agent,模拟不同的浏览器:
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3');
输入 URL
可以使用 goto() 方法输入 URL,跳转到指定的页面:
await page.goto('https://www.baidu.com');
在跳转页面前也可以设置一些 options 选项,这些选项包括 timeout、waitUntil 等等,例如:
await page.goto('https://www.baidu.com', { timeout: 30000, // 30 秒超时时间 waitUntil: 'domcontentloaded', // 等待页面 DOMContentLoaded 事件 });
页面操作
在跳转到特定页面之后,可以对页面进行一些操作,例如输入内容、点击按钮、获取元素属性等等。Puppeteer 提供了一些 API,可以帮助我们实现这些操作。
输入内容
可以使用 type() 方法输入内容:
await page.type('#kw', 'Puppeteer');
在这个例子中,我们通过 CSS 选择器 #kw 获取页面中的输入框,然后在输入框中输入了 Puppeteer。
点击按钮
可以使用 click() 方法点击按钮:
await page.click('.s_btn');
在这个例子中,我们通过 CSS 选择器 .s_btn 获取页面中的搜索按钮,然后模拟点击。
获取元素属性
可以使用 evaluate() 方法获取元素属性值:
const resultText = await page.evaluate(() => { return document.querySelector('#content_left h3.t a').textContent; }); console.log(resultText);
在这个例子中,我们通过 document.querySelector() 方法获取指定元素,然后通过 textContent 属性获取元素的文本内容。
完整示例代码:
-- -------------------- ---- ------- ----- --------- - --------------------- ------ -- -- - ----- ------- - ----- ------------------- ----- ---- - ----- ------------------ ----- ------------------ ------ ----- ------- --- --- ----- ---------------------------------- - -------- ------ ---------- ------------------- --- ----- ---------------- ------------- ----- --------------------- ----- ---------- - ----- ---------------- -- - ------ ------------------------------------- ---- ---------------- --- ------------------------ ----- ---------------- -----
总结
使用 Puppeteer 进行 Web 自动化测试可以帮助我们提高测试效率,减少人工测试的工作量。基于 Node.js 平台,Puppeteer 提供了一系列方便的 API,可以轻松地进行 DOM 操作、模拟用户行为等。在实际使用中,需要结合具体场景,合理地使用 Puppeteer 提供的 API 进行测试,以达到最佳的测试效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ae1c6848841e9894a16b39