测开之路六十五: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网页或者单独的样式单文件.无论哪一种方式,样式单包含将样式应用到指定类型 ...
随机推荐
- [19/05/15-星期三] HTML_body标签(超链接标签和锚点)
一.超链接标签 <html> <head> <meta charset="UTF-8"> <title>04 body超链接标签学习 ...
- C# 委托 线程 窗体假死
转载:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html 异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能. ...
- Vue build打包之后,刷新页面出现404解决方案
Vue build打包之后,刷新页面出现404,HTML5 History 模式 原因分析: vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于 ...
- 一、JQJson数组
叙述:常用的数据格式无非三种(组装数据,传参传值) 一.数组 : 1.定义 var select = []; //或 var select = new Array(); 2.JS给一个数组赋值 sel ...
- cd 切换目录
1. 功能说明 cd是“change directory”中每个氮气的首字母缩写功能是重当前工作目录切换到指定的工作目录:cd是内建命令. 2. 语法格式 cd [option] [dir] cd ...
- 去掉Tomcat网站地址栏的小猫图标
当我们打开CSDN等网站时,在地址栏前面就会出现红色的C状图标,如果在桌面新建此链接的快捷方式,则桌面图标也自动变为该地址栏ICO图标.在基于TOMCAT的BS应用或网站开发时,默认的图标为黄色的小猫 ...
- bzoj4771 七彩树 dfs序+主席树+树链的并
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4771 题解 一道不错的树链并的基础练习题. 如果不是树,而是一个数组的话,对于给定区间内的不同 ...
- bzoj1875 [SDOI2009]HH去散步 矩阵快速幂
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1875 题解 如果没有这个"不能立刻沿着刚刚走来的路走回",那么这个题就是一 ...
- 免插件,简单实现上拉加载loading
上拉加载是前端经常遇到的问题,采用插件往往能够轻松解决,这里介绍一种免插件简单实现上拉加载的方法,参考一下,下面分享一下代码. html <body> <ul> <li& ...
- 06.队列、python标准库中的双端队列、迷宫问题
class QueueUnderflow(ValueError): """队列为空""" pass class SQueue: def __ ...