数据库用到的是mysql,框架涉及数据库,主要包含两个方面,一个是每个案例执行完毕后,插入案例相关信息与数据;一个是web界面数据核对的时候,需要从sql中获取某行某列值与界面某个值做比较。

描述:web很大一部分的测试,就是对比界面上面的数据信息是否准确;比如一些简单数据的统计、数据的基本信息、也包括数据转换的数据(0:正常,1:停用);但是考虑web数据核对的时候,主要有两个方案,一个是初始化一批数据,然后拿界面数据与初始化数据做比较;第二中是直接拿数据库中相关信息数据,然后再和界面做一个对比;考虑到,第一种方案支持不是太好,web页面数据核对都是 采取第二中方案,其中有两种实现方式,一种是取一个sql的数据集合再和界面元素拼装成一个数据集合对比,另外一种是取一段sql数据集合的某行某列和界面一个元素对比。

web数据核对这块,抛砖引玉了,有什么好想法,好建议欢迎探讨~~谢谢

下面是实例代码(例子只涉及数据对比):

#coding=utf-8
'''
Created on 2014年7月4日

@author: 一声叹息
'''
import MySQLdb
import sys
import os
from selenium import webdriver
import time
# reload(sys)
# reload(sys).setdefaultencoding('gbk')

# def printStr(**kwargs):
# return kwargs[0][3]

#初始化查询sql
sql = "select * from testdata"

'''
create table `testdata` (
`id` double ,
`name` varchar (600)
);
insert into `testdata` (`id`, `name`) values('1','testname');
insert into `testdata` (`id`, `name`) values('3','test_百度翻译');
'''
#初始化数据库连接参数
try:
conn =MySQLdb.connect(host="192.168.0.153",port=3306,user="root",passwd="mysql123",db="test",charset="utf8")
print "链接成功"
except MySQLdb.Error, e:
print "链接失败"

#定义取列
def printStr(r,c,*args):
return args[0][c]
#封装一个查询方法,传入参数sql,行r,列c
def findData(str,r,c):
cursor = conn.cursor()
cursor.execute(str)
return printStr(r,c,cursor.fetchall()[r])
conn.close()

def allData(str):
cursor = conn.cursor()
cursor.execute(str)
for i in cursor.fetchall():
print i
return "输出alldata完毕"
conn.close()

#获取web界面某个项值
browser = webdriver.Firefox()
browser.get("http://www.baidu.com/")
time.sleep(3)
browser.find_element_by_id("kw1").send_keys("test")
time.sleep(2)
browser.find_element_by_id("su1").click()
time.sleep(1)

#获取某个值,转换类型
print "%s"%str(browser.find_element_by_xpath("/html/body/div/div[6]/div/div[2]/div/h3/a").text)

#数据对比,

print str(browser.find_element_by_xpath("/html/body/div/div[6]/div/div[2]/div/h3/a").text) == str(findData(sql,1,1))

time.sleep(1)
browser.close()
browser.quit()

web自动化框架之三获取数据库值与界面值比较~~的更多相关文章

  1. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  2. 基于Selenium的Web自动化框架增强篇

    在写完上一篇“基于Selenium的Web自动化框架”(http://www.cnblogs.com/AlwinXu/p/5836709.html)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...

  3. Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)

    作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...

  4. web自动化框架如何设计

    web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...

  5. 基于Selenium的web自动化框架

    转自 : https://www.cnblogs.com/AlwinXu/p/5836709.html 1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台. ...

  6. 【转】基于Selenium的web自动化框架(python)

    1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...

  7. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  8. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  9. Web自动化框架搭建——前言

    1.web测试功能特性 a.功能逻辑测试(功能测试),这一块所有系统都是一致的,比如数据的添加.删除.修改:功能测试案例设计感兴趣和有时间的话可以另外专题探讨: b.浏览器兼容性测试,更重要的是体验这 ...

随机推荐

  1. [主席树]HDOJ4348 To the moon

    题意:n个数, m个操作 1. C l r d  给[l, r]区间的每个数加上d2. Q l r:   查询[l, r]区间的和3. H l r t: 查询第t个操作时[l, r]区间的和4. B ...

  2. 欧拉工程第72题:Counting fractions

    题目链接:https://projecteuler.net/problem=72 真分数;n/d 当d ≤ 1,000,000时候的真分数有多少个 public class P72{ void run ...

  3. hdu 1005 java(System.out.println();与System.out.println(“\n”);)

    //package Main; import java.util.Scanner; public class Main { static int [][] mat=new int [2][2]; st ...

  4. 【Linux高频命令专题(13)】cat

    概述 常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. cat主要有三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一 ...

  5. Qt 自定义model实现文件系统的文件名排序(重定义sort函数即可。忽然开窍了:其实捕捉点击Header事件,内部重排序,全部刷新显示即可)

    前段时间,需要做一个功能是要做文件系统的排序的功能.由于是自己写的model, 自己定义的数据结构.最初的想法只有一个自己去实现文件夹跟文件名的排序算法,不过感觉比较费时间.后来想到的是QFileSy ...

  6. HDU5086——Revenge of Segment Tree(BestCoder Round #16)

    Revenge of Segment Tree Problem DescriptionIn computer science, a segment tree is a tree data struct ...

  7. [转]更新Debian软件源

    转自:香神无涯 sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak #备份一下软件源sudo vi /etc/apt/sources.lis ...

  8. 【原创】30分钟入门 github

    很久没更新了,这篇文章重点在github的入门使用,读者可以下载github for windows shell,边看边操作,加深印象. 好了,30分钟的愉快之旅开始吧: 一.github使用的注意事 ...

  9. JPA中的@MappedSuperclass

    说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 用来申明一个超类,继承这个类的子类映射 ...

  10. usaco /the first wave

    bzoj1572:贪心.先按时间顺序排序,然后用优先队列,如果时间不矛盾直接插入,否则判断队列中w最小的元素是否替换掉.(没用llWA了一次 #include<cstdio> #inclu ...