Node使用Selenium进行前端自动化操作的代码实现

2020-06-17 05:30:14易采站长站整理

Selenium WebDriver 集成

1. 安装selenium-webdriver


yarn add selenium-webdriver

2. 下载安装支持不同浏览器的驱动。(此处只介绍Chrome驱动)

[ChromeDriver][3]下载并解压文件,同时把解压的执行文件放置到 /usr/bin目录下。或者设置相应的PATH路径,确保可执行文件在PATH路径中。

开始使用

进入我们刚才创建的项目文件夹,目录如下:

页面添加一个开始按钮,以及给按钮添加事件。

找到 views/index.ejs, 添加如下代码:(为了方便操作,引入了jquery, axios, 所以需要下载准备好)

添加对应的路由

在app.js文件中,引入路由chromeDriver


var chromeDriverRouter = require('./routes/chromeDriver');
app.use('/chromeDriver', chromeDriverRouter);

引入selenium-webdriver

在routes/chromeDirver.js文件中,我们添加了一个方法handleBaiDuDriver,这个方法用于处理模拟百度搜索自动化的一些测试。

首先我们需要在文件顶部引入selenium-webdriver


const {Builder, By, Key, until} = require('selenium-webdriver');

// Builder: 用于创建一个WebDriver实例。
// By: 表示通过什么方式来查找页面的元素。
// By.className( name ) → By
// By.css( selector ) → By
// By.id( id ) → By
// By.js( script, ...var_args ) → function(WebDriver): Promise
// By.linkText( text ) → By
// By.name( name ) → By
// By.partialLinkText( text ) → By
// Key: 表示键盘上一系列的按键。
// until: 定义了一些工具类的方法。

然后书写我们的方法体里的内容。


const handleBaiDuDriver = async () => {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('http://www.baidu.com');

await driver.findElement(By.id('kw')).sendKeys('webdriver', Key.RETURN);//正常使用

await driver.findElement(By.id('su')).click();

await driver.wait(until.titleIs('百度一下,你就知道'), 1000);

} catch (error) {