//添加网址的函数,生成一个输入网址的标签,并且把标签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的更多相关文章

  1. 测开之路六十三:UI测试平台之视图层

    实现效果,在页面时配置 后台执行 蓝图结构 视图代码 from flask import jsonifyfrom flask import requestfrom flask import Bluep ...

  2. 测开之路六十二:接口测试平台之公共的js、html、平台入口

    common.js //定义后台的host和端口var host = 'http://192.168.xxx.1:8000'; //'http://127.0.0.1:8000'; //用于发送htt ...

  3. 测开之路六十六:UI测试平台之处理逻辑和蓝图添加到程序入口

    from selenium import webdriverfrom common import get_case_idfrom common.mongo import Mongo class Log ...

  4. 测开之路六十四:UI测试平台之前端页面

    {% extends "base.html" %} {% block script %} <!-- 引入js文件,需要在base.html留入口,不然渲染会出问题. --&g ...

  5. 测开之路八十五:python处理csv文件

    写入csv文件 一:写入字典 二:写入普通数据 读取: 第一种:普通读取 第二种:读取csv并用namedtuple映射列名,类似于使用类的实例 第三种:字典形式 import csvfrom col ...

  6. 测开之路七十五:linux常用命令

    常用命令: ls:列出文件或目录 pwd:展示当前所在的目录 mkdir:创建目录 mkdir -p :创建连续的目录 cd:切换目录 vi:编辑内容,点i开始编辑,输入::wq保存 cat 显示文件 ...

  7. 测开之路六十:接口测试平台之common目录

    实现接口测试平台使用jsonpath进行取值来断言,效果: 访问页面: 调试功能:http://www.kuaidi100.com/query 保存功能 触发执行功能 查看报告功能 目录结构 comm ...

  8. 测开之路四十五:Django之最小程序

    安装Django库 Django最小程序 import sysfrom django.conf.urls import urlfrom django.conf import settingsfrom ...

  9. 测开之路三十五:css引入

    CSS是一种定义样式结构,如字体.颜色.位置等的语言,被用于描述网页上的信息格式化和现实的方式.CSS样式可以直接存储于HTML网页或者单独的样式单文件.无论哪一种方式,样式单包含将样式应用到指定类型 ...

随机推荐

  1. Java中获取大小:length、length()、size()

    1. java 中的 length 属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了 length 这个属性. 2. java 中的 length() 方法是针对字符串说的,如 ...

  2. Hadoop运行模式:本地模式、伪分布模式、完全分布模式

    1.本地模式:默认模式 - 不对配置文件进行修改. - 使用本地文件系统,而不是分布式文件系统. - Hadoop不会启动NameNode.DataNode.ResourceManager.NodeM ...

  3. MIT 6.824学习笔记4 Lab1

    现在我们准备做第一个作业Lab1啦 wjk大神也在做6.824,可以参考大神的笔记https://github.com/zzzyyyxxxmmm/MIT6824_Distribute_System P ...

  4. SQL Server 基础知识/数据类型/数值类型

    数据库设计简单地来讲,也就是设计表格的过程. 表格存储的数据是可以理解为一个二维表,由行和列组成. 原则上来讲,一个数据库只需要一个字段,一个数据类型就可以解决所有的问题,但是这样做并不明智,所以一般 ...

  5. OC学习--面向对象的个人理解

    1. 什么是面向对象? 以下一段话是我在百度上找的解释: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面 ...

  6. windows 安装nodejs 和 npm

    1.从nodejs官网下载 安装文件,我安装的版本是  node-v10.15.0-x64.msi ,双击进行安装. 2.安装完成后可以查看相关目录,这里会有一个node_modules目录和node ...

  7. Ansible笔记(7)---常用模块之系统类模块(cron、service)

    一.cron模块 1.1作用: cron 模块可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令. 在了解cron模块的参数之前,先写出一些计划任务的示例: # 示例1,每天的1点 ...

  8. CSS3选择器 ::before和::after

    :before和:after伪元素的用法 :before和:after伪元素的用法十分简单:下面的代码样例中, :before 和 :after 将会在 blockquote 元素之前和之后插入新内容 ...

  9. 机器学习:2.NPL自然语言处理

    1. 词带的简单解释: 每一个词出现了多少次,缺点是不知道顺序 2.seq2seq自然语言处理的核心 RNN: 一对一:输入一个,输出一个 一对多:输入一个,输出多个 多对一:输入多个,输出一个 多对 ...

  10. Python获取exe文件版本

    import time, datetime, re, subprocess, sys, os, win32net, win32api, win32con, win32netcon, win32secu ...