测开之路六十五:UI测试平台之js

//添加网址的函数,生成一个输入网址的标签,并且把标签append到id为cases下
function browser() {
var html = '\
<div class="row" command="browser">\
<label>打开网址:</label>\
<input type="text" placeholder="http://www.baidu.com/">\
</div>\
'
$('#cases').append(html)
} //选择元素选择器(xpath、css···),和对应的元素表达式
//selenium的BY支持:id、xpath、link text、partial link text、name、tag name、class name、css selector"
function find() {
var html = '\
<div class="row" command="find">\
<label>定位方式:</label>\
<select>\
<option value="xpath">xpath</option>\
<option value="css selector">css selector</option>\
<option value="name">name</option>\
</select>\
<label>元素:</label>\
<input type="text">\
</div>\
'
$('#cases').append(html)
} //输入内容
function send() {
var html = '\
<div class="row" command="send">\
<label>填写内容:</label>\
<input type="text">\
</div>\
'
$('#cases').append(html)
} //动作选项下的动作,目前只做了click,还有获取文本等操作未实现
function click() {
var html = '\
<div class="row" command="click">\
<label>选择动作:</label>\
<select>\
<option value="click">click</option>\
</select>\
</div>\
'
$('#cases').append(html)
} //command被点击时的处理方法,取option的值(对应html的select标签下option的value)判断是要做什么操作,调对应的函数
// 如:打开网页、点击、定位、输入内容···
function add_element() {
var command = $('#option').val()
if (command == 'browser') {
browser(); //调browser函数
} else if (command == 'find') {
find(); //调find函数
} else if (command == 'send') {
send() //调send函数
} else if (command == 'click') {
click() //调click函数
} else {
alert("错误的方法!")
}
} //提取参数,解析操作
function parse_parameters(html) {
var data = {}
//获取command的属性,用来判断对应的操作
var command = $(html).attr("command")
//如果command是browser,即打开浏览器操作,则执行以下操作
if (command == 'browser') {
data['command'] = 'browser'; //把command的值初始化为browser
data['parameter'] = { //parameter的值初始化为input标签里的值,即网址
'value': $(html).find('input').val()
}
//如果command是find,则执行以下操作
} else if (command == 'find') {
data['command'] = 'find'; //把command的值初始化为find,用于后台反射
data['parameter'] = {
'selector': $(html).find('select').val(), //selector取select标签的值
'value': $(html).find('input').val(), //value取input标签的值
}
//如果是send操作,value取input标签的值
} else if (command == 'send') {
data['command'] = 'send';
data['parameter'] = {
'value': $(html).find('input').val()
}
//点击操作,不需要参数
} else if (command == 'click') {
data['command'] = 'click';
data['parameter'] = {
}
} else {
//目前没有写的操作,均视为错误
console.log("错误的HTML!")
}
console.log(data)
return data;
} //成功,打印数据
function success(data) {
alert(data['message'])
//console.log(data)
} //失败,打印数据
function fail(data) {
alert(data['message'])
//console.log(data)
} //运行操作
function run() {
//取出cases下的所有div标签
var list = $('#cases').find('div');
//定义data的数据结构为{'casename': casename, 'commands': []}
var data = {
'casename': $('#name').val(),
'commands': []
};
//把list里的每一个元素解析出来,数据结构如下
// data = {
// 'commands': [
// {'command': 'get',
// 'parameter': {'value': 'www.xxx.com'}
// }, {}]}
$(list).each(function(index, item){
var command = parse_parameters(item)
data['commands'].push(command)
});
console.log(data)
var url = host + '/automation/api/v1/run'; //把数据发送到/automation/api/v1/run接口处理
http(url, data, 'POST', success, fail);
} //保存操作(和run一样)
function save() {
var list = $('#cases').find('div'); //提取数据
var data = {
'casename': $('#name').val(),
'commands': []
};
$(list).each(function(index, item){
var command = parse_parameters(item)
data['commands'].push(command)
});
console.log(data)
var url = host + '/automation/api/v1/save';
http(url, data, 'POST', success, fail);
} //js处理入口
$(function() {
$('#command').click(add_element); //添加按钮
$('#run').click(run); //运行按钮
$('#save').click(save); //保存按钮
});
测开之路六十五:UI测试平台之js的更多相关文章
- 测开之路六十三:UI测试平台之视图层
实现效果,在页面时配置 后台执行 蓝图结构 视图代码 from flask import jsonifyfrom flask import requestfrom flask import Bluep ...
- 测开之路六十二:接口测试平台之公共的js、html、平台入口
common.js //定义后台的host和端口var host = 'http://192.168.xxx.1:8000'; //'http://127.0.0.1:8000'; //用于发送htt ...
- 测开之路六十六:UI测试平台之处理逻辑和蓝图添加到程序入口
from selenium import webdriverfrom common import get_case_idfrom common.mongo import Mongo class Log ...
- 测开之路六十四:UI测试平台之前端页面
{% extends "base.html" %} {% block script %} <!-- 引入js文件,需要在base.html留入口,不然渲染会出问题. --&g ...
- 测开之路八十五:python处理csv文件
写入csv文件 一:写入字典 二:写入普通数据 读取: 第一种:普通读取 第二种:读取csv并用namedtuple映射列名,类似于使用类的实例 第三种:字典形式 import csvfrom col ...
- 测开之路七十五:linux常用命令
常用命令: ls:列出文件或目录 pwd:展示当前所在的目录 mkdir:创建目录 mkdir -p :创建连续的目录 cd:切换目录 vi:编辑内容,点i开始编辑,输入::wq保存 cat 显示文件 ...
- 测开之路六十:接口测试平台之common目录
实现接口测试平台使用jsonpath进行取值来断言,效果: 访问页面: 调试功能:http://www.kuaidi100.com/query 保存功能 触发执行功能 查看报告功能 目录结构 comm ...
- 测开之路四十五:Django之最小程序
安装Django库 Django最小程序 import sysfrom django.conf.urls import urlfrom django.conf import settingsfrom ...
- 测开之路三十五:css引入
CSS是一种定义样式结构,如字体.颜色.位置等的语言,被用于描述网页上的信息格式化和现实的方式.CSS样式可以直接存储于HTML网页或者单独的样式单文件.无论哪一种方式,样式单包含将样式应用到指定类型 ...
随机推荐
- SocketChannel 读取ByteBuf 的过程
SocketChannel 读取ByteBuf 的过程: 我们首先看NioEventLoop 的processSelectedKey 方法: private void processSelectedK ...
- xml与Properties的区别
1.properties配置文件,是一个属性对应于一个值(key = value)这样的键值匹对模式: 每一行properties配置文件的键值,对应着一次赋值: 特殊点: 在前后两行properti ...
- BZOJ 1767] [Ceoi2009] harbingers (斜率优化)
[BZOJ 1767] [Ceoi2009] harbingers (斜率优化) 题面 给定一颗树,树中每个结点有一个邮递员,每个邮递员要沿着唯一的路径走向capital(1号结点),每到一个城市他可 ...
- POJ 1905 题解(二分+几何)
题面 传送门 分析 如图:已知AB=L,弧AB=L(1+nC)" role="presentation" style="position: relative;& ...
- python RE表达式规则剩余规则
前面我学习了 ’.‘ '^' '$' '*' '+' '?' 基本针对单个字符的,学习python 表达式规则剩余规则. 1,{m} 匹配前一个字符m次 2,{n,.m} 匹配前一个字符n到m次 3 ...
- 使用Kafka的一些简单介绍: 1集群 2原理 3 术语
目录 第一节 Kafka 集群 Kafka 集群搭建 Kafka 集群快速搭建 第二节 集群管理工具 集群管理工具 集群 Issues 第三节 使用命令操纵集群 第四节 Kafka 术语说明 第五节 ...
- 通过设置代理解决AndroidStudio无法下载gradle问题
一.AndroidStudio代理 我们平时在使用android studio时,难免需要从android官网下载一些项目运行所需要的SDK文件,但是因为android官网在国外,访问起来会比较慢,所 ...
- 【记录】解决windows中nginx明明退出了,为什么还能反向代理?CMD强制杀死进程命令
博主今天遇到一个很奇怪的问题,nginx在windows中明明已经退出了,而且在任务管理器中也没发现nginx进程, 为什么还能反向代理呢? 找了半天资料终于解决,现记录如下,希望能帮助到你. 步骤一 ...
- java 关键字volatile
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- 解决安装mysql-connector-odbc-5.3.2 错误1918……不能加载安装或转换器库……的BUG
还是在虚拟机Windows Server 2003上安装mysql-connector-odbc-5.3.2,装着装着就报错了,大致是“错误1918……不能加载安装或转换器库……”,问我Retry,I ...