-
Cucumber的语法
2013-01-25 10:47:06
英文语法: # language: en Feature: Addition In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: case 1 - Add two numbers Given the input "2+2" When the calculator is run Then the output should be "4" Scenario Outline: case 2 - Add two numbers Given the input "<input>" When the calculator is run Then the output should be "<output>" Examples: | input | output | | 2+2 | 4 | | 98+1 | 99 | *But也是常用的关键字 *Given,When,Then,But都可以在一个Scenario里出现一次或者不出现 *Given后的And等同于Given, Then后的And等同于Then
中文语法: # language: zh-CN 功能:加法 为了避免一些愚蠢的错误 作为一个数学白痴 我希望有人告诉我数字相加的结果 场景: 两个数相加 假如我已经在计算器里输入6 #Given 而且我已经在计算器里输入7 #And(Given) 当我按下相加按钮 #When 那么我应该在屏幕上看到的结果是13 #Then 场景大纲: 将两个数相加 假如我已经在计算器上输入<数值_1> 而且我已经在计算器上输入<数值_2> 当我按下 <按钮> 那么我应该在屏幕上看到<结果> 例子: | 数值_1 | 数值_2 | 按钮 | 结果 | | 20 | 30 | add | 50 | | 2 | 5 | add | 7 | | 0 | 40 | add | 40 |
没有When的
场景: 两个数相加 假如我已经在计算器里输入6 #Given 而且我已经在计算器里输入7 #And(Given) 而且我按下相加按钮 #And(Given) 那么我应该在屏幕上看到的结果是13 #Then
-
Watir的xpath 应用
2013-01-23 17:41:44
Watir的element定位,是可以使用xpath来进行定位的,它的实现过程如下:通过DOM组件来获得HTML文件的源文件清除HTML源文件的格式,然后转化为一个正确的XHTML文件将XHTML作为一个输入传递给REXML使用REXML来解析XPath的表达式,从而获得指定元素的绝对路径将绝对路径通过COM方式返回给DOM,从而获得定位我们一般使用的XPath的路径表达式有:// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。. 选取当前节点。.. 选取当前节点的父节点。@ 选取属性。实例:1. 指定查找
我们有一个a元素为:<a href="test.htm">click me</a>
browser.link(:xpath,"//a[@href='test.htm']").text
# => "click me“
如果这个a是第一个,我们可以用
browser.link(:xpath, “//a”).html #//a 返回第一个
browser.link(:xpath, //a[1]).html #//a[1] 数组是以1开始,非0
2. 完全定位查找
百度的页面上有:
<input type="submit" value="百度一下" id="su" class="s_btn" nmousedown="this.className='s_btn s_btn_h'" nmouseout="this.className='s_btn'">
browser.button(:xpath,"//input[@id=‘su’]").type
# => “submit"
3. 也可以模糊查找
browser.button(:xpath,"//input[contains(@id, ‘su’)]").type
# => “submit"
4. 相对路径
例如有:
<div id="u">
<a href="http://www.baidu.com/gaoji/preferences.html" name="tj_setting">搜索设置</a>
</div>
我们可以对a的父节点进行搜索:
browser.element(:xpath, "//a/..").tag_name
#=> "div"
5. 完全模糊查找
当我们只知道id,不知道type信息的情况下
browser.element(:xpath, "//×[@id='u']").tag_name
-
cucumber的结果输出
2013-01-23 11:21:39
cucubmer可以直接输出结果为一个html文件命令行方式即可:cucumber features --format html --out public/output.html
全部通过的结果:一部分failed的结果: -
Watir各元素的私有方法(3)
2013-01-22 17:42:36
Radio button- set选择指定的radio选项browser.radio(:id, "radio1").set- set?判断该radio选项是否被选中browser.radio(:id, "radio1").set?Screenshot-base64以base64编码保存考屏图像browser.screenshot.base64-png以png编码保存考屏图像browser.screenshot.png-save(path)将图像保存到指定的路径browser.screenshot.save("c:")Select- clear清楚所有的选择好的选项browser.select(:id, "select1").clear- enabled?判断select是否可以选择browser.select(:id, "select1").enabled?- include?(str_or_rx)判断所有的选项的文本或者标签是否匹配指定字符串browser.select(:id, "select1").include?("option1")- options返回一个数组包含所有的选项browser.select(:id, "select1").options- select(str_or_rx)选择文本或者标签匹配指定的字符串的选项browser.select(:id, "select1").select("Argo")- select_value(str_or_rx)选择内容匹配指定的字符串的选项browser.select(:id, "select1").select_value("Argo")-selected?(str_or_rx)判断文本或者标签匹配指定的字符串的选项是否选中browser.select(:id, "select1").selected?("Argo")- selected_options返回一个数组包含所有已经选择的选项browser.select(:id, "select1").selected_options- value返回列表第一个选项的值browser.select(:id, "select1").valueTable- [](idx)返回表的指定序号行browser.table(:id, "table1").[](0)- hashes将表的所有行以hash表方式返回browser.table(:id, "table1").hashes- row返回表格的行browser.table(:id, "table1").row(1)- rows返回表格的所有行的集合browser.table(:id, "table1").rows- to_a以2d方式生成一个row的集合browser.table(:id, "table1").to_aTable row- [](idx)返回指定行的表头或者单元browser.table(:id, "table1").[](0).th[](1)browser.table(:id, "table1").[](1).td[](2)Text Area- append在文本域的原有内容后添加指定文本内容browser.textarea(:id, "textarea1").append("test")- clear清除文本域所有文本browser.textarea(:id, "textarea1").clear- set将文本域中原有文本替换为现指定的文本browser.textarea(:id, "textarea1").set("test")Text Field- append在文本框的原有文本后添加指定文本内容browser.text_field(:id, "text_field1").append("test")- clear清除文本框的原有文本browser.text_field(:id, "text_field1").clear- set将文本框的原有文本替换为现指定的文本browser.text_field(:id, "text_field1").set("test")- enabled?判断文本框是否可以修改browser.text_field(:id, "text_field1").enabled?- type返回文本框的类型browser.text_field(:id, "text_field1").type -
Watir各元素的私有方法(2)
2013-01-22 16:32:44
Filefield- set(path)设置文件的路径browser.file_field(:id, "test").set("c:")- value=(path)设置文件的路径browser.file_field(:id, "test").value="c:"Form- submit点击submit按钮,提交formbrowser.form(:id, 'form1').submitFrame- assert_exists判断该frame是否存在browser.frame(:id, 'frame1').assert_exists- execute_script(script, *arg)执行一个外部的JavaScript片段- html返回frame的inner html值browser.frame(:id, 'frame1').html- locate定位一个framebrowser.frame(:id, 'frame1').locateHidden- visible?判断隐藏的tag是否页面可见browser.hidden(:id, "test").visible?Image- file_created_date返回图片的创建日期browser.image(:id, "image1").file_created_date- file_size返回图片的大小browser.image(:id, "image1").file_size- height以像素为单位,返回图片的高度browser.image(:id, "image1").height- width以像素为单位,返回图片的宽度browser.image(:id, "image1").width- loaded?判断图片是否被加载browser.image(:id, "image1").loaded?- save(path)将图片按指定路径存储browser.image(:id, "image1").save("c:")Option- clear清除当前选定的选项browser.select(:id, "select1").options.first.clear- select选择指定的选项browser.select(:id, "select1").options.first.select- selected?判断指定的选项是否已经被选中browser.select(:id, "select1").options.first.selected?- text返回指定选项的文本内容browser.select(:id, "select1").options.first.text- toggle切换指定选项的状态browser.select(:id, "select1").options.first.toggle -
Watir各元素的私有方法(1)
2013-01-22 15:44:00
Alert- close关闭当前的alert/prompt弹窗。此方法相当于点击Cancel,Close等按键。browser.alert.close- ok点击alert/prompt弹窗的OK buttonbrowser.alert.ok-set(value)在prompt弹窗中输入内容browser.alert.set('test')-text返回alert/prompt弹窗的内容值browser.alert.textBrowser-new创建新的实例browser = Watir::Browser.new:ff-start带参数创建新的实例browser = Watir::Browser.start("www.baidu.com", browser=:ff)- assert_exists判断该browser的instance是否存在browser.assert_exists=> true- back返回上页,等同于点击browser的back键browser.back- close (等同于quit)关闭当前的窗口/页面browser.close- disable_checker(checker)关闭指定的checkerbrowser.disable_checker(page)- execute_script(script, *arg)执行一个外部的JavaScript片段- forward页面向前进一步,等同于点击browser的forward按键browser.foward- goto(uri)页面转向指定的URI地址browser.goto('www.google.com')- ready_state返回表示browser就绪的标志内容browser.ready_state=> "complete"- refresh刷新当前页面browser.refresh- reset!强行复位browserbrowser.reset!- status返回状态栏的内容browser.status返回页面body中的文本内容browser.text- title返回页面的title内容browser.title=> "google"- url返回当前的url值browser.url=> "http://www.google.com.hk/"页面在ready status出现前(complete),等待指定的秒数,默认5秒browser.wait(10)- window(*args, &blk)返回指定的browser所含的windowbrowser.window(:title, 'Google')- windows(*arg)返回指定browser的window集合browser.windows(:title, 'Google')- wait_until(*arg, &blk)页面在条件满足前等待browser.wait_until(:title, 'Google')- wait_while(*arg, &blk)页面在条件满足时等待browser.wait_while(:title, 'Google')Button- enalbed?是否可以点击browser.button(:id, 'btkn').enabled?- text返回tag为<button>的文本值browser.button(:id, 'button').text- value返回tag为<input>的button类型的值browser.button(:id, 'inputbutton').valueCheckbox-clear清除checked状态,变为uncheckedbrowser.checkbox(:id, 'check1').clear-set(bool= true)设置状态,checked/uncheckedbrowser.checkbox(:id, 'check1').set #checkedbrowser.checkbox(:id, 'check1').set(false) #unchecked-set?判断checked状态browser.checkbox(:id, 'check1').set?=> false #uncheckedCookie- add(name, value, pts = {})添加一个cookie到当前browserbrowser.cookies.add('my_session', 'testcookie', :secure => true)pts= :secure/:path/:expires /:domain- clear清除当前browser的所有cookiebrowser.cookies.clear- delete删除一个指定名字的cookiebrowser.cookies.delete('my_session')- to_a当前browser的所有cookie生成一个数组browser.cookies.to_a -
Watir元素的常用方法
2013-01-22 15:40:09
== 是否相等attribute_value 返回指定属性的值add_checker 添加checkerbrowser 返回所在browser对象click 左键单击clear 清除选择close 关闭double_click 左键双击drag_and_drop_by 拖拽到指定区域drag_and_drop_on 拖拽到指定元素上driver 返回所用的driverenabled? 是否可以点击exists? 是否存在fire_event 执行指定的事件flash 高亮该对象focus 焦点移至该对象上focused? 焦点是否在对象上hash 返回该对象的hash值hover 鼠标悬浮在该对象上html 返回该对象的html内容inspect 返回该对象的inspect值parent 返回该对象的父节点present? 是否存在并可见right_click 右键点击一次run_checkers 返回正在运行的对象列表style 返回对象的style值set 设置值send_keys 发送值参tag_name 返回对象的tag值text 返回对象的text值to_subtype 返回对象的子类型type 返回对象的类型value 返回对象的value值visible? 是否可见wd 返回该对象的driver值wait_until_present 对象出现前等待waith_while_present 对象消失前等待when_present 对象出现前等待 -
Watir Web-Driver 的checkbox对象
2013-01-21 17:49:38
作为checkbox来处理的对象有:<input type="checkbox">可以用来定位checkbox的方法有::class 类名:id id号:index 索引号:name 名字:text 文本:value 值:xpath xpath路径multiple 混合方式通用的方法有:== 是否相等attribute_value 返回指定属性的值browser 返回所在browser对象click 左键单击clear 清除选择double_click 左键双击drag_and_drop_by 拖拽到指定区域drag_and_drop_on 拖拽到指定元素上driver 返回所用的driverenabled? 是否可以点击exists? 是否存在fire_event 执行指定的事件flash 高亮该checkboxfocus 焦点移至该checkbox上focused? 焦点是否在checkbox上hash 返回该checkbox的hash值hover 鼠标悬浮在该checkbox上html 返回该checkbox的html内容inspect 返回该checkbox的inspect值parent 返回该checkbox的父节点present? 是否存在并可见right_click 右键点击一次run_checkers 返回正在运行的checker列表style 返回checkbox的style值set 设置checkbox的值,默认true(checked)set? 返回checkbox是否已经被checkedtag_name 返回checkbox的tag值text 返回checkbox的text值to_subtype 返回checkbox的子类型type 返回checkbox的类型value 返回checkbox的value值 (input类型使用)visible? 是否可见wd 返回该checkbox的driver值wait_until_present 出现前等待waith_while_present 消失前等待when_present 出现前等待例如:browser.checkbox(:id => 'checkit').when_present.click
-
Watir Web-Driver 的button对象
2013-01-21 16:24:12
作为button来处理的对象有:<button><input type="button"><input type="image"><input type="reset"><input type="submit">可以用来定位button的方法有::alt 别名:class 类名:id id号:index 索引号:name 名字:src 源(image button only):text 文本:value 值:xpath xpath路径multiple 混合方式通用的方法有:== 是否相等attribute_value 返回指定属性的值browser 返回所在browser对象click 左键单击double_click 左键双击drag_and_drop_by 拖拽到指定区域drag_and_drop_on 拖拽到指定元素上driver 返回所用的driverenabled? 是否可以点击exists? 是否存在fire_event 执行指定的事件flash 高亮该buttonfocus 焦点移至该button上focused? 焦点是否在button上hash 返回该button的hash值hover 鼠标悬浮在该button上html 返回该button的html内容inspect 返回该button的inspect值parent 返回该button的父节点present? 是否存在并可见right_click 右键点击一次run_checkers 返回正在运行的checker列表style 返回button的style值tag_name 返回button的tag值text 返回button的text值 (button类型使用)to_subtype 返回button的类型value 返回button的value值 (input类型使用)visible? 是否可见wd 返回该button的driver值wait_until_present 出现前等待waith_while_present 消失前等待when_present 出现前等待例如:browser.button(:id => 'foo').when_present.click
-
Watir Web-Driver 的Screenshot处理
2013-01-21 15:51:08
watir可以对当前页面进行拍照,并按照指定格式转换,存储到指定位置(String) base64将拍照结果用base64编码:#browser.screenshot.base64#=> '7HWJ43tZDscPleeUuPW6HhN3x+z7vU/lufmH0qNTtTum94IBWMT46evImci1vnFGT'(string) png将拍照结果使用png进行编码:#browser.screenshot.png#=> '\x95\xC7\x8C@1\xC07\x1C(Edb\x15\xB2\vL'(Object) save(path)将拍照结果存入指定路径下:#browser.screenshot.save("screenshot.png")默认路径为当前目录事实上,我们可以指定其他格式,例如:#browser.screenshot.save("screenshot.jpg")#browser.screenshot.save("c:\\screenshot.jpg") -
Watir Web-Driver 的cookie处理
2013-01-21 14:59:09
Watir可以对cookie进行一定的处理
主要方法有
- (Object) add(name, value, pts = {})
添加一个新cookie
browser.cookies.add('my_session', 'testcookie', :secure => true)
opts操作符可以有:
- :secure
- :path
- :expires
- :domain
- (object) clear
清楚browser所有的cookie
browser.cookies.clear
- (Object) delete(name)
删除指定名字的cookie
browser.cookies.delete('my_session')
- (Array<Hash>) to_a
将所有的cookie值返回成一个array表
browser.cookies.to_a
#=> {:name=>"my_session", :value=>"testcookie", :domain=>"www.google.com"}
- :secure
-
Watir Web-Driver 的Browser对象
2013-01-21 13:20:30
Watir的browser对象Web-driver的大部分操作,都是将browser做为一个容器,然后去操作其当前页面所含的element。Browser对象是由如下方法创建:- (Watir::Browser)new(:firefox)
Browser = Watir::Browser.new:ff或者:Browser = Watir::Browser.start("www.baidu.com", browser=:ff)该对象的方法有:(Object) driver (等同于wd)返回该对象的driver属性值browser.driver=> #(Selenium::WebDriver::Driver:0x324wef34 browser=:chrome)添加一个checkerbrowser.add_checker do |page|page.text.include?("Server Error") and puts "Application exception or 500 error!"end操作JavaScript生成的alert,confirms和prompt窗口更多见: http://www.51testing.com/?uid-26810-action-viewspace-itemid-832516判断该browser的instance是否存在Browser.assert_exists=> true(object) back返回上页,等同于点击browser的back键browser.back(object) browser返回对象的browser属性的值browser.browser=> #<Watir::Browser:0x..fd324ds324c url ="about:blank" title="about:blank">(object) close (等同于quit)关闭当前的窗口/页面browser.close(Watir::Cookies) cookies处理当前页面的cookie更多见:http://www.51testing.com/?uid-26810-action-viewspace-itemid-832645(object) disable_checker(checker)关闭指定的checkerbrowser.disable_checker(page)执行一个外部的JavaScript片段(Boolean) exist? (等同于exists?)判断页面是否被关闭browser.exist?=> true页面向前进一步,等同于点击browser的forward按键browser.foward页面转向指定的URI地址browser.goto('www.google.com')返回当前页面的html内容browser.html返回当前页面的inspect属性的值browser.inspect=> "#<Watir::Browser:0x..fdd3423c url=\"http://www.google.com.hk/\" title=\"Google\">返回表示browser就绪的标志内容browser.ready_state=> "complete"刷新当前页面browser.refresh强行复原browserbrowser.reset!正在运行checker列表browser.run_checkers处理当前的页面的快照更多见:http://www.51testing.com/?uid-26810-action-viewspace-itemid-832647向页面当前focus的元素发送browser.send_keys('test')返回状态栏的内容browser.status返回页面body中的文本内容browser.text返回页面的title内容browser.title=> "google"返回当前的url值browser.url=> "http://www.google.com.hk/"页面在ready status出现前(complete),等待指定的秒数,默认5秒browser.wait(10)(window) window(*args, &blk)返回指定的browser所含的windowbrowser.window(:title, 'Google')(Array(window)) windows(*arg)返回指定browser的window集合browser.windows(:title, 'Google')(object) wait_until(*arg, &blk)页面在条件满足前等待browser.wait_until(:title, 'Google')(object) wait_while(*arg, &blk)页面在条件满足时等待browser.wait_while(:title, 'Google') -
Watir Web-Driver 的Anchor(link)对象
2013-01-18 13:33:11
Watir的Anchor是HTML Elment,其实就是,只不过a是其的缩写。在Watir中,使用Anchor,实际上以link作为操作对象的。例如:在百度首页上,有一个link: hao123我们访问这个link:browser.link(:name, 'tj_hao123').class返回值为:=> Watir::AnchorAnchor对象的方法有如下:== 判断两个link是否相同browser.link(:name, 'tj_hao123') == browser.link(:text, 'hao123')=>trueattribute_value 获得指定属性的值browser.link(:name, 'tj_hao123').attribute_value("href")=> "http://www.hao123.com/"browser 所在browser的属性值browser.link(:name, 'tj_hao123').browserclick 左键单击linkbrowser.link(:name, 'tj_hao123').clickdouble_click 左键双击linkbrowser.link(:name, 'tj_hao123').double_clickdrag_and_drop_by 和 drag_and_drop_on 拖拽link到指定的位置/指定的元素上browser.link(:name, 'tj_hao123').drag_and_drop_by(100,-200)input1 = browser.text_field(:name, 'test')browser.link(:name, 'tj_hao123').drag_and_drop_by(input1)driver 返回webdriver的driver信息browser.link(:name, 'tj_hao123').driverexists?/visible?/present? link是否存在/页面可见/存在+页面可见browser.link(:name, 'tj_hao123').exists?browser.link(:name, 'tj_hao123').visible?browser.link(:name, 'tj_hao123').present?fire_event 触发一个事件browser.link(:name, 'tj_hao123').fire_event('click') //等同于click方法flash 让link的背景闪烁几下,一般用来调试定位元素browser.link(:name, 'tj_hao123').flashfocus 将焦点置于该link上 / focused? 是否焦点在该link上browser.link(:name, 'tj_hao123').focusbrowser.link(:name, 'tj_hao123').focused?=> truehash 返回该link的哈希值browser.link(:name, 'tj_hao123').hashhover 将鼠标悬浮到该link上browser.link(:name, 'tj_hao123').hoverhtml 返回该link的html编码browser.link(:name, 'tj_hao123').htmlinitialize 创建一个新的link实例browser.link.initialize(paretn, selector)inspect 返回该link的信息browser.link(:name, 'tj_hao123').inspectparent 返回该link的父节点browser.link(:name, 'tj_hao123').parentright_click 右键点击该linkbrowser.link(:name, 'tj_hao123').right_clickrun_checkers 该元素所涉及的checker列表,需要通过add_checker提前增加才能返回内容browser.link(:name, 'tj_hao123').run_checkersselect_text 选择link中的指定文本(实际证明,该方法不存在)browser.link(:name, 'tj_hao123').select_text("123")send_keys 向该link元素发送键值browser.link(:name, 'tj_hao123').send_keys(:enter) //相当于敲回车键,等同于clickstyle. 返回该link的style值browser.link(:name, 'tj_hao123').styletag_name 返回该link的tagbrowser.link(:name, 'tj_hao123').tag_name=> "a"text 返回该link的text内容browser.link(:name, 'tj_hao123').text=> "hao123"to_subtype 返回该link的subtypebrowser.link(:name, 'tj_hao123').to_subtypevalue 返回该link的value属性值browser.link(:name, 'tj_hao123').value=> "" //value 为空wait_until_present 在link出现前,最多等待多少秒 (超时,link没出现,报错)browser.link(:name, 'tj_hao123').wait_until_presentwait_while_present 在link消失前,最多等待多少秒 (超时,link还在,报错)browser.link(:name, 'tj_hao123').wait_while_presentwhen_present 等待多少秒,直到link出现(等同于wait_until_present)browser.link(:name, 'tj_hao123').when_present.clickwd 返回link的webdriver idbrowser.link(:name, 'tj_hao123').wd=>#<Selenium::WebDriver::Element:0x123da83 id=":wdc:123234234"> -
Watir Web-Driver 的Alert 应用
2013-01-17 15:56:14
Watir Web-Driver已经不再依赖AutoIt就可以对Alert窗口进行操作。Alert的方法主要有:- close 关闭当前的alert/prompt弹窗。此方法相当于点击Cancel,Close等按键。
- exists? 是否存在alert/prompt弹窗 (present?也可以用)。
- ok 点击alert/prompt弹窗的OK button
- set(value) 在prompt弹窗中输入内容
- text 返回alert/prompt弹窗的内容值
- wait_until_present 在弹窗出现前,最多等待多少秒 (超时,弹窗没出现,报错)
- wait_while_present 在弹窗消失前,最多等待多少秒 (超时,弹窗还在,报错)*官方文档的注释是错误的
- when_present 等待多少秒,直到弹窗出现(等同于wait_until_present)
后三者的用法是:browser.alert.wait_until_present
browser.alert.wait_while_present(10)
browser.when_present
我们看一个具体的实例:首先,我们创建一个alerttest.html文件,放到D盘根目录下,内容为:<html><head><SCRIPT. LANGUAGE="JAVASCRIPT">function button1onclick(){confirm("Confirm Mode")}function button2onclick(){alert("Alert Mode")}function button3onclick(){var name=prompt("Your name is:");document.write(name);}</SCRIPT></head><form><input type="button" value="confirm mode" id ="button1" nclick="button1onclick()"><input type="button" value="alert mode" id ="button2" nclick="button2onclick()"><input type="button" value="prompt mode" id ="button3" nclick="button3onclick()"></form></html>然后我们创建一个测试脚本test.rb#encoding:utf-8require 'watir-webdriver'require 'test/unit'class MyTest < Test::Unit::TestCasedef test$browser = Watir::Browser.new :chrome$browser.goto("d:\\alerttest.html")# confirm$browser.button(:id,'button1').clicksleep(1)if $browser.alert.exists? then$browser.alert.ok # $browser.alert.closesleep(1)end# alert$browser.button(:id,'button2').clicksleep(1)if $browser.alert.wait_until_present(3) then$browser.alert.ok # $browser.alert.close$browser.alert.wait_while_present(5)end# alert$browser.button(:id,'button3').clicksleep(1)if $browser.alert.when_present thensleep(1)$browser.alert.set("test name")sleep(1)$browser.alert.ok # $browser.alert.closesleep(2)endendend -
性能测试指标的含义(4)- Network
2013-01-15 21:43:35
Network Interface 计数器
Bytes Total/sec
是在每个网络适配器上发送和接收字节的速率,包括帧字符在内。是Bytes Received/sec 和Bytes Sent/sec的总和。
Current Bandwidth
指以位/每秒估计的网络接口的当前带宽。
Output Queue Length
为输出数据列队 (数据包) 的长度。如果这个长于 2,即会出现延缓并且如果可能的话找出并解决瓶颈问题。当输出使用网络驱动程序接口规格(NDIS) 列队,永远是0。
Packets/sec
为在网络界面发送和接收数据包的速率。
Packets Outbound Discarded
指选定要丢弃的输出数据包的数目,即便没有发现会阻止传输这些数据包的错误。丢弃数据包的可能原因是释放缓冲空间。
Packets Outbound Error
为由于错误不能传输的输出数据包的数目。
Packets Received Discarded
指选定要丢弃的输入数据包的数目,即使没有发现阻碍这些数据包可传送到更高层协议的错误。造成丢弃数据包的可能原因是释放缓冲器空间。
Packets Received Error
指输入的错误数据包数目,这些数据包含阻碍它们可传送到更高层协议的错误。
Packets Received/sec
接收数据包的速率。
Packets Sent/sec
发送数据包的速率。 -
性能测试指标的含义(3)- Object,Memory 和 Disk
2013-01-15 21:42:23
Object 计数器
Threads
线程指在数据收集时在计算机中线程的数目。
Memory 计数器
Available Bytes
是计算机上可用于运行处理的有效物理内存的字节数量。
Cache Bytes
是系统驻留缓存的总数。
Pages/sec
是指为解析硬页错误从磁盘读取或写入磁盘的页数。是 Memory - Pages Input/sec 和 Memory -Pages Output/sec 的总和。
Page Reads/sec
是指为解析硬页错误而读取磁盘的次数。从磁盘上检索。
Memory - Transition Faults/sec
是指由在修改页列表、备份页表或在页错误时写入磁盘上造成的页错误数量。
Pool Paged Bytes
指在分页池中的字节数。分页池是系统的物理内存中可供对象(在不处于使用时可以写入磁盘的对象)使用的区域。
Pool Nonpaged Bytes
指在非分页池中的字节数。 非分页池是指系统的物理内存中可供对象(在不处于使用时不可以写入磁盘上的,必须保留在物理内存中的对象)使用的一个区域。
Physical Disk 计数器
%Disk Time
指磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
% Idle Time
指磁盘驱动器闲置时间的百分比。一般配合%Disk Time使用。
Disk Reads/sec
磁盘驱动器读取操作的速率。
Disk Writes/sec
磁盘驱动器写入操作的速率。
Avg. Disk Queue Length
指读取和写入请求列队的平均数。
File Data Operations/sec
指在计算机的所有逻辑磁盘上读取和写入操作的综合速度。这是系统的逆转率:每秒钟的文件控制操作。 -
性能测试指标的含义(2)- system 和 process
2013-01-15 21:40:21
System 计数器
Processor Queue Length
是指处理列队中的线程数。即使在有多个处理器 的计算机上处理器时间也会有一个单列队。如果处理器列队中总是有两个以上的线程,通常表示处理器堵塞。
Context Switches/sec
指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率。Process 计数器
Private Bytes
指这个处理不能与其它处理共享的、已分配的当前字节数。
Virtual Bytes
指处理使用的虚拟地址空间的大小。虚拟空间是有限,如果使用过多,可能会限制处理加载数据库的能力。
Working Set
是在处理中被线程最近触到的那个内存页集的大小。
Handle Count
是在这个处理中每个线程当前打开的句柄的总数。
Page Faults/sec
指在这个进程中执行线程造成的页面错误出现的速度。当线程引用了不在主内存工作集中的虚拟内存页即会出现 Page Fault。
% User Time
指处理线程用于执行使用用户模式的代码的时间的百分比。应用程序、环境分系统和集合分系统是以用户模式执行的。Windows 的可执行程序、内核和设备驱动程序不会被以用户模式执行的代码损坏。
% Privileged Time是在特权模式下处理线程执行代码所花时间的百分比。当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。在用户模式执行的线程无法访问这些数据。
% Processor Time
是所有进程线程使用处理器执行指令所花的时间百分比。指令是计算机执行的基础单位。线程是执行指令的对象,进程是程序运行时创建的对象。
Page File Bytes
指这个处理在 Paging file 中使用的最大字节数。Paging File 用于存储不包含在其他文件中的由处理使用的内存页。Paging File 由所有处理共享,并且 Paging File 空间不足会防止其他处理分配内存。
I/O Data Bytes/sec
处理从 I/O 操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。 -
性能测试指标的含义(1)- Processor计数器
2013-01-15 21:39:09
Processor计数器
%Processor Time
指处理器执行非闲置线程时间的百分比。通常应该在80%以下(单核),超过80%表示CPU的处理能力已经达到极限。
% Interrupt Time
是处理器在实例间隔期间接受和服务硬件中断的时间的百分比。
% User Time
指处理器处于用户模式的时间百分比。用户模式是为应用程序所使用的环境。
% Privileged Time
在特权模式下处理线程执行代码所花时间的百分比。特权模式用于访问操作系统服务。
% DPC Time
指处理器用缓延程序调用 (DPC) 接收和提供服务的百分比。在多处理器系统中,如果这个值大于50%并且% Processor Time非常高,加入一个网卡可能会提高性能。
Interrupts/sec
指处理器每秒钟接收并维护的硬件中断的平均值。大多数的系统时钟每隔 10 毫秒中断处理器一次。 -
使用performance monitor 监控系统资源
2013-01-15 18:48:02
windows自带的performance monitor其实很强大,我们可以定制我们需要的监控目标,例如一个典型的用例:求一款可以设置时间自动记录系统资源使用情况的工具,如可以设置每个20s记录一次CPU和内存等资源使用情况,自动保存在一个文档中其实很简单,下面一步步的进行操作:1.第一步,打开performance monitor。在XP环境下,路径是: Control Panel -》Administrative Tools -》 Performance2.选择要使用的log类型。按照上述要求,使用counter logs即可。点击Performance Logs and Alerts, 然后选择Counter Logs,然后点击右键,选择New Log Settings3. 配置log首先输入log的名称,比如:my logs,然后点击OK然后比如你要记录CPU和Memory的使用情况,可以点击Add Counters。选择要监控的电脑,然后从列表中选择Processor,然后选择%Processor Time,点击Add button。然后在列表中选择Memory,然后比如你要监控剩余了多少内存,通过总内存-剩余内存,就知道消耗的总内存数。 选择 Available MBytes。点击Add。然后选择Close。4. 选择频率你可以看到有一个Memory和一个Processor的counter已经加好。选择下面的interval 20, Units seconds 意思是20秒记录一次。5.log文件的位置点击Log Files tab,你可以选择 文件的类型,比如 Text File(Tab delimited)点击config 可以设置log文件在那个目录下6. 设置运行点击Schedule 你可以选择这个log从什么时候开始执行。现在就可以用了。打开文件你可以看到:"(PDH-TSV 4.0) (China Standard Time)(-480)" "\\LAP\Memory\Available MBytes" "\\LAP\Processor(_Total)\% Processor Time""01/15/2013 19:02:30.306" "1171" "99.999985898144317""01/15/2013 19:02:50.295" "1163" "12.333386063062356" -
Watir Web-Driver Element 的通用方法(3)
2013-01-15 17:49:06
- (Object) select_text(str)
选择执行元素对象的指定文本。
browser.area(:name, “first”).select_text(“Hello World!”)
- (Object) send_keys(*args)
对元素对象发送指定的键盘输入。
browser.div(:id => "foo").send_keys ("Watir", :return)
- (OString)Style(property = nil)
返回对象的style属性内容。
browser.a(:id => "foo").style
#=> "display: block"
browser.a(:id => "foo").style( "display")
#=> "block"
- (String) tag_name
返回指定元素tag名称。
browser.element(:id, “als”).tag_name
#=> “div”
- (String) text
返回指定元素text内容。
browser.element(:id, “als”).text
#=> “Google.com”
- (Object) to_subtype
返回指定元素的详细类型信息。
browser.element(:id, “als”).to_subtype
#=> #<Watir::Div:0x4e234d2 located=false selector={:element=>(webdriver element)}>
- (String) value
返回指定元素value内容。
browser.button(:name, “btnK”).value
#=> “Google Search”
- (Boolean) visible?
指定元素是否在页面上可见。
browser.button(:name, “btnK”).visible?
#=> true
注意:watir拥有三种方法Element#exists?, Element#visible? Element#present?
分别表示: 页面中存在 页面上可见 页面上存在且可见
- (Object) wd
指定元素的web driver信息。
browser.button(:name, “btnK”).wd
#=> #<Selenium::WebDriver::Element:0x619efdca id=”:wdc:1234324234”)
- (Object) wait_until_present(timeout=30)
等待指定元素的在页面上present,可以设置等待超时的时间,默认30秒。
browser.button(:name, “btnK”).wait_until_present
- (Object) wait_while_present(timeout=30)
指定元素的在页面上present后,等待一定时间长度。可以设置等待超时的时间,默认30秒。
browser.button(:name, “btnK”).wait_while_present
- (Object) when_present(timeout=30)
等待指定元素的在页面上present,可以设置等待超时的时间,默认30秒。
browser.button(:name, “btnK”).when_present.click
- (Object) downcase(value)
返回指定元素value内容。
browser.button(:name, “btnK”).value
#=> “Google Search”
browser.button(:name, “btnK”).downcase
#=> “google search”
- (Object) upcase(value)
返回指定元素value内容。
browser.button(:name, “btnK”).value
#=> “Google Search”
browser.button(:name, “btnK”).upcase
#=> “GOOGLE SEARCH”
标题搜索
我的存档
数据统计
- 访问量: 151598
- 日志数: 185
- 文件数: 6
- 建立时间: 2007-08-06
- 更新时间: 2015-01-06