人才价值评估自动化项目

项目准备工作

文档地址

egg.js的api文档:https://eggjs.org/zh-cn/intro/open in new window

puppeteer的api文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/open in new window

puppeteer的chrome插件:https://www.chajianmi.com/topic/djeegiggegleadkkbgopoonhjimgehdaopen in new window

gitee地址:https://gitee.com/ouyangdan/nodejs-auto-testopen in new window

人才评估流程:数据创建流程

准备流程

找欧阳丹获取gitee权限和云效文档权限,拉取代码并安装必备模块,然后安装puppeteer的chrome插件,最后根据云效文档的流程(里面有测试的url地址)进行自动化开发。

项目使用的puppeteer常用api方法

建议去api文档处搜索用法

  • puppeteer.launch()

  • brower.pages()

  • brower.newPage()

  • browser.close()

  • page.goto()

  • page.waitForSelector()

  • page.type()

  • page.click()

  • page.waitForNavigation()

  • page.waitForTimeout()

  • page.evaluate()

egg.js的目录结构和使用方法

egg-project
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app
|   ├── router.js(注册控制器)
│   ├── controller(存放控制器)
│   |   └── home.js
│   ├── service (可选)(存放服务)
│   |   └── user.js
│   ├── middleware (可选)
│   |   └── response_time.js
│   ├── schedule (可选)
│   |   └── my_task.js
│   ├── public (可选)
│   |   └── reset.css
│   ├── view (可选)
│   |   └── home.tpl
│   └── extend (可选)
│       ├── helper.js (可选)
│       ├── request.js (可选)
│       ├── response.js (可选)
│       ├── context.js (可选)
│       ├── application.js (可选)
│       └── agent.js (可选)
├── config
|   ├── plugin.js
|   ├── config.default.js
│   ├── config.prod.js
|   ├── config.test.js (可选)
|   ├── config.local.js (可选)(设置ip地址)
|   └── config.unittest.js (可选)
└── test
    ├── middleware
    |   └── response_time.test.js
    └── controller
        └── home.test.js

重点是service、controller文件夹和router.js、config.local.js文件

service里面存放服务(js文件),就是功能写在service里面,如下:

// 设置service
const Service = require('egg').Service;

class serviceTest extends Service {
	serviceMethod() { ... } // 方法
}

controller里面存放控制器(js文件),后面访问的url就定位到对应的控制器方法,如下:

// 设置Controller
const Controller = require('../core/baseController');
class controllerTest extends Controller {
	method() { 
		this.service.serviceTest.serviceMethod() // 调用service方法
	}
}

设置完controller后就在router.js中注册,如下:

module.exports = app => {
	const { router, controller } = app;
	router.get(
		'/api/v1/fe/controllerTest/method.do',
		controller.controllerTest.method
	);
}

设置config.local.js的ip地址为本地ip(wifi的ip),如下:

最后启动项目打开对应的url即可:

在vscode的命令行中使用:npm run dev

在浏览器中输入:http://localhost:7002/api/v1/fe/controllerTest/method.doopen in new window

项目优化方案

因为使用dom自动化创建上传到服务端有bug且时间过长,所以添加个流程。

创建测试账号

先使用原来的自动化创建流程先创建10-50个账号,并存储把账号标记存储在数据库。

连接了measure后的cms数据库的cms_customer表:

字段是否必须输入备注
cms_customer_id主键,必须输入测试账号的手机号
user_name必须输入用户名
company_name必须输入公司名
phone非必须输入客户手机号
create_time必须输入绑定账号的时间
status必须输入状态,默认为‘0’,0为创建失败,1为创建成功还未使用,2为正在绑定,3为已被绑定,-1为其他的状态
type必须输入默认为0,0为人才评估测试账号,1为蓝皮书账号
position非必须输入职位

自动创建的企业名称为:测试-[法人代表手机号]

每次创建成功一个账号或者创建失败一个账号都会发送通知到企业微信机器人。

绑定测试账号并登录

用户在链股官网发送请求时后台会获取到名称、企业名称和电话,

如果用户已经绑定过测试账号,就自动登录”李磊”的账号进入系统,

如果没绑定过再自动绑定对应的自动化创建的账号:

  • 登录链股网络协作商业操作系统:

登录地址:http://suc.bd.yun.linkkap.com/user/index.jspxopen in new window

账号:admin

密码:123456

  • 打开运营支撑系统

  • 打开商户管理

  • 输入营业执照编号(法人代表手机号),然后点击搜索

该步骤需要从数据库获取status为1的primary_key,并把该primary_key的status设置为2。

  • 搜索后点击第一个企业的编辑

  • 修改对应信息

修改信息填写规则:

字段名称填写规则
法人代表用户在申请体验时填写的姓名
企业名称用户在申请体验时填写的企业名称
企业联系电话用户在申请体验时填写的手机号
企业联系地址填写用户在申请体验时的IP地址所在地
  • 点击保存

点击保存成功后,把对应primary_key的status置为3,失败则置为0,并发送通知到企业微信。

注意:失败后会给用户一个提示,并提供重试按钮。

如果成功后给用户自动登录”李磊”的账号进入系统。

自动补充测试账号

在每次用户绑定成功或失败时,都会去自动检测一次数据库,在测试账号少于10-50时自动补充测试账号。