摘要: 1 # -*- coding:utf-8 -*- 2 3 """ 4 selenium webdriver 定位元素是通过使用 findElement() 和 findElements()方法. 5 findElement() 方法返回一个基于指定查询条件的 WebElement 对象或是抛出一个没有 6 找到符合条件元素的异常. 7 findElements()方法会返回匹配指定查询条件的 WebElement的集合,如果没有找到则返回为空. 8 findElement() 和 findElements() 方法当找不到相应的元素的时候就会抛出 NoSuchEl 阅读全文
posted @ 2013-06-10 19:58 Roger| 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 是选择HTML还是URL录制,有以下参考原则:(1)基于浏览器的应用程序推荐使用HTML-based script。(2)不是基于浏览器的应用程序推荐使用URL-based script。(3)如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based script方式录制。(4)基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based script方式录制。 阅读全文
posted @ 2013-06-10 19:49 Roger| 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时, LoadRunner 录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决。 启动浏览器,打开Internet选项对话框,切换到高级标签,去掉"启用第三方浏览器扩展(需要重启动)"的勾选,然后再次运行VuGen即可解决 问题 还有就是点击“我的电脑-》属性-》高级-》性能设置-》数据执行保护-》选择“仅为基本WINDOWS程序和服务启用DEP” 提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制。因此建议运行LoadRunner得主机上保持一个干净测 阅读全文
posted @ 2013-06-10 19:48 Roger| 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1 Action() 2 { 3 char * time; 4 char * str; 5 //获得当前系统时间,格式设置.将当前时间赋值给 times 6 lr_save_datetime("%Y-%m-%d %H:%M:%S",DATE_NOW + TIME_NOW,"times"); 7 //得到 times 的值 8 time = lr_eval_string("{times}"); 9 //输出 10 lr_output_message(time); 11 12 ... 阅读全文
posted @ 2013-06-10 19:47 Roger| 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就 阅读全文
posted @ 2013-06-10 19:46 Roger| 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Transactions(用户事务分析) 用户事务分析是站在用户角度进行的基础性能分析。1、Transation Sunmmary(事务综述) 对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。2、Average Transaciton Response Time(事务平均响应时间) "事务平均响应时间"显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。 例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将 阅读全文
posted @ 2013-06-10 19:45 Roger| 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 大家在使用selenium元素定位的时候,通常更多使用的是XPATH,css定位方式用得比较少 但有时候css定位方式还是有一些优势的, 优势1:一般情况下定位速度要比XPATH快 优势2:语法要比XPATH更简洁 下面简要介绍一下css元素选择器的语法 常见语法*通用元素选择器,匹配任何元素E标签选择器,匹配所有使用E标签的元素.infoclass选择器,匹配所有class属性中包含info的元素#footerid选择器,匹配所有id属性等于footer的元素E,F多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔E F后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用 阅读全文
posted @ 2013-06-10 19:42 Roger| 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 1 # -*- coding:utf-8 -*- 2 """ 3 class login 继承 unittest.Testcase 4 unittest.main()测试类中以 test 开头的测试用例 5 setUp:初始化 6 tearDown:只要setUp启动成功,不管以test开头的case程序是否执行成功, tearDown 都会被执行 7 """ 8 from selenium import webdriver 9 import unittest10 11 class login(unittest.TestCase):1 阅读全文
posted @ 2013-06-10 15:26 Roger| 阅读(207) 评论(0) 推荐(0) 编辑
摘要: loadrunner录制下载文件,文件如何保存,如何获得服务器返回的文件名,保存文件时如何随机生成文件名在录制脚本的过程中,我们把下载文件的请求单独放到一个action中,我们先简单的分析一下录制下载文件的脚本,在脚本中只能看到这样一个下载的请求:web_url("download.php", "URL=http://211.147.208.141/cn/resources/download.php?id=386", "Resource=1", "RecContentType=application/force-downlo 阅读全文
posted @ 2013-06-10 01:35 Roger| 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 数据分配方法Select next row 设置数据分配方法,包括: "Sequential、Random、Unique"。数据分配方法描述表 分配方法描述Sequential(顺序)"顺序" 方法是顺序地向 Vuser 分配数据。当正在运行的 Vuser 访问数据表时,它将会提取下一个可用的数据行。如果在数据表中没有足够的值,则 VuGen 返回到表中的第一个值,循环继续直到测试结束。Random(随机)"随机" 方法为每个 Vuser 分配一个数据表中的随机值,可以指定随机种子数。每个种子值代表用于测试执行的一个随机值顺序。每当使 阅读全文
posted @ 2013-06-10 01:34 Roger| 阅读(202) 评论(0) 推荐(0) 编辑
摘要: AnalysisSummary:场景摘要 Period:场景运行的起止时间。 ScenarioName:场景名称 ResultsSession:场景运行的结果目录 Duration:场景运行的时间StatisticsSummary:场景状态的统计说明 MaximunRunning Vusers:场景最大用户数 TotalThroughput(bytes):总带宽流量 AverageThroughput(bytes/second):平均每秒带宽流量 Total Hits:总点击数AverageHits per Second:平均每秒点击量 Transaction Summary:事务摘要 Tot 阅读全文
posted @ 2013-06-10 01:33 Roger| 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 1. Web Page Diagnostics(网页分析) 当场景中打开 Diagnostics 菜单下 Web Page Diagnostics 功能后, 才能得到网页分析组图。 通过该图, 可以对事务的组成进行抽丝剥茧的分析, 得到组成这个页面的每一个请求的时间分析, 进 一步了解响应时间中有关网络和服务器处理时间的分配关系。 可以实现对网站的前端性能分析, 明确系统响应时间较长是由服务器端处理能力不足还是客户端链接 到服务器的网络消耗导致的。 1.1 Web Page Diagnostics(网页分析) 该图先会得到整个场景运行后虚拟用户访问 Page 列表, 也就是所有页面下载时间列. 阅读全文
posted @ 2013-06-10 01:32 Roger| 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 图的设置与操作Merge Graphs(合并图)合并图的3种方式:Overlay(叠加)、Tile(平铺)、Correlate(关联).Overlay:将两张图的通过x轴进行覆盖合并.tips:Running Vusers 和 Average Transaction Response Time 合并, 可以得到用户增长的过程是如何影响平均时间的.Tile:将两张图的Y轴为上、下部分,不做叠加.tips:Running Vusers 和 Hist per Second 合并, 可以看到随着用户数量增加每秒点击量的变化过程, 从而了解在当前负载下系统承受点击量峰值.Correlate:首先将主图的 阅读全文
posted @ 2013-06-10 01:30 Roger| 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 这段时间天天测 WebService ,测得真想吐。WebService的测试方法,如果WebService中调用的方法需输入的参数本身就是个XML文件时:参数文件格式:<?xml version="1.0" encoding="UTF-8"?><root><header><lines><smsuser& amp;gt;<id>98d93b3c88cb471881493a1ddcb67d1e</id><batchId>test_batch_id_10< 阅读全文
posted @ 2013-06-10 01:29 Roger| 阅读(595) 评论(0) 推荐(0) 编辑
摘要: web_reg_save_param_ex():关联web_get_int_property():可以使用该函数获取页面返回的一些东西,如状态码:200web_custom_request("web_custom_request", "URL=http://192.168.0.83:8080/message-center/ws/b2cSmsWebService", "Method=POST", "RecContentType=application/soap+xm... 阅读全文
posted @ 2013-06-10 01:28 Roger| 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 1 # *-* coding: utf-8 *-* 2 3 #列表是可变的,有序的. 列表中可以存放任意混合数据类型 4 5 cast = ["Cleese", "Palin", "Jones", "Idle"] 6 print(cast) 7 8 #len() 获得列表长度 9 print(len(cast))10 #使用索引方式访问列表, 索引从 0 开始11 print(cast[1])12 #list.append() 在列表末尾添加一个数据项13 cast.append("Gilliam&quo 阅读全文
posted @ 2013-06-10 01:09 Roger| 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 1 # *-* coding: utf-8 *-* 2 3 import os 4 5 #os.getcwd() 当前工作目录 6 os.getcwd() 7 8 #data = open('test1.txt') 9 #print(data.readline())10 11 #返回文件起始位置12 #data.seek(0)13 14 #if os.path.exists('test.txt'):15 try:16 data = open('test.txt') #打开文件17 for line in data:18 try:19 ... 阅读全文
posted @ 2013-06-10 01:07 Roger| 阅读(224) 评论(0) 推荐(0) 编辑
摘要: class MyClass(object): count = 0 #类成员 def __init__(self): MyClass.count += 1 def getCount(self): return MyClass.count #返回计数器if __name__ == '__main__': f = MyClass() f1 = MyClass() print(MyClass.count) print(f1.getCount()) 阅读全文
posted @ 2013-06-10 01:03 Roger| 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 静态方法使用 @staticmethod 修饰类成员方法使用 @classmethod 修饰class MyClass(object): @staticmethod def test1(): print("static test1") @classmethod def test2(cls): print("class method ", cls)if __name__ = '__main__' MyClass.test1() MyClass.test2() 阅读全文
posted @ 2013-06-10 01:02 Roger| 阅读(226) 评论(0) 推荐(0) 编辑
摘要: property 4个参数, fget、 fset、 fdel、 doc实际上讲 get set del 方法绑定在一个成员变量上 1 class Rectangle(object): 2 def __init__(self): 3 self.width = 0 4 self.height = 0 5 6 def setSize(self, size): 7 self.width, self.height = size 8 9 def getSize(self):10 retur... 阅读全文
posted @ 2013-06-10 01:01 Roger| 阅读(172) 评论(0) 推荐(0) 编辑