测开之路六十五: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网页或者单独的样式单文件.无论哪一种方式,样式单包含将样式应用到指定类型 ...
随机推荐
- squid代理服务问答
1. 简述一下squid的用途?squid可以做代理和缓存服务器,而做代理时,可以分为正向代理和反向代理.正向代理用在企业办公环境中,企业员工上网通过代理来上网,代理的缓存功能可以为企业节省宝贵的带宽 ...
- 下载JSON数据
最近学习MongoDB,需要获取大量Json在线数据,例如: http://media.mongodb.org/zips.json 此处使用c#,直接给出代码: HttpWebRequest requ ...
- 《jmeter:菜鸟入门到进阶系列》
jmeter是我从事软件测试工作以来接触的第一个性能测试工具,也是耗费时间精力最多的一个工具,当然,学习jmeter过程中,由于知识储备不够,也顺带学习了很多其他相关的一些知识. 一直有个想法,就是把 ...
- VirtualStringTree常用类和属性
重要的类:TBaseVirtualTree = class(TCustomControl)TCustomVirtualStringTree = class(TBaseVirtualTree)TVirt ...
- python实现一个简单的网络聊天程序
一.Linux Socket 1.Linux Socke基本上就是BSD Socket(伯克利套接字) 伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信.B ...
- QT中使用Event Filter监听button事件,Release后button不见
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/27201043 问题RT,在程序中我使用 ...
- slot-scope 插槽 的使用 ——'<template slot-scope="page">'
slot-scope="page"slot-scope 是一个插槽,拿外面的数据,可以获取当前一行的数据page.row.pageId 拿到当前行数据的pageId注意:slot- ...
- Python subprocess ffmpeg
# -*- coding:utf-8 -*- import os, sys, getopt import numpy as np import subprocess as sp import cv2 ...
- CCF CSP/CCSP报名费优惠的方法以及常见疑问
目录 1. 本文地址 2. 认证作用 2.1. 高校认可 2.2. 赛事认可 2.3. 企业认可 3. 报名费价格及获取优惠的方法 3.1. CCF CSP 3.2. CCF CCSP 4. 语言与I ...
- 联想ideapad 310s如何进BIOS,换固态硬盘SSD,配置U盘启动,重装Win10系统
1. 如何进BIOS 关机情况下,捅一下Novo键,即可进入BIOS 2. 安装固态硬盘 Ideadpad 310S 本身自带的硬盘是5400转的机械硬盘,容量小速度慢.换的新的固态硬盘是SATA接口 ...