Kingson's blog print "recording life"

15十一/100

watir语法(Web Application Testing in Ruby)

  1. # 使用Watir工具,需要在脚本中加上
  2. require 'watir'
  3. # 创建一个IE的实例
  4. ie = Watir::IE.new
  5. # 或者在创建的同时直接转到页面
  6. ie = Watir::IE.start('http://www.text.com/')
  7. # Watir使用start方法同时创建一个浏览器实例并转到一个页面。
  8. # IE浏览速度
  9. ie.speed = :fast
  10. ie.speed = :slow
  11. # 页面导航
  12. ie.goto('http://www.text.com/')
  13. # 注: ie.goto还可以运行javascript的代码如: ie.goto("javascript: ie.document.write("Hello World");")
  14. # 取得当前网页的网址
  15. ie.url
  16. # 点击超链接
  17. ie.link(:text , "Pickaxe").click
  18. ie.link(:href, /http:\/\/pragmaticprogrammer\.com/).click
  19. ie.link(:name => 'foo', :index => 1).click
  20. # 超链接的uri
  21. ie.link(:text , "Pickaxe").href
  22. ie.link(:index, 1).href
  23. ie.link(:text => "reply", :index => 2).href
  24. # 超链接的文本
  25. ie.link(:href , /http:\/\/pragmaticprogrammer\.com/).text
  26. =begin
  27. 对应的HTML代码为:
  28. <a href="http://pragmaticprogrammer.com/titles/ruby/" mce_href="http://pragmaticprogrammer.com/titles/ruby/">Pickaxe</a>
  29. =end
  30. # img标签
  31. ie.image(:name, 'image').src
  32. ie.image(:index, 2).src
  33. =begin
  34. 对应的HTML代码为:
  35. <img name = img src="http://pragmaticprogrammer.com/titles/ruby/top.gif" mce_src="http://pragmaticprogrammer.com/titles/ruby/top.gif">
  36. <img name = img src="http://pragmaticprogrammer.com/titles/ruby/head.gif" mce_src="http://pragmaticprogrammer.com/titles/ruby/head.gif">
  37. =end
  38. # 设置复选框
  39. ie.checkbox(:name, "checkme").set
  40. ie.checkbox(:name, "checkme", "1").set # 使用name和value属性设置复选框
  41. # 清除复选框
  42. ie.checkbox(:name, "checkme").clear
  43. ie.checkbox(:name, "checkme", "1").clear # 使用name和value属性清除复选框
  44. =begin
  45. 对应的HTML代码为:
  46. <input type = "checkbox" name = "checkme" value = "1">
  47. =end
  48. # 设置单选框
  49. ie.radio(:name, "clickme").set
  50. ie.radio(:name=>'clickme', :index=>2).set
  51. ie.radio(:name, "clickme", "1").set # 使用name和id属性设置单选框
  52. # 使用name属性清除单选框
  53. ie.radio(:name, "clickme").clear
  54. ie.radio(:name, "clickme", "1").clear # 使用name和id属性清除单选框
  55. =begin
  56. 对应的HTML代码为:
  57. <input type = "radio" name = "clickme" id = "1">
  58. <input type = "radio" name = "clickme" id = "2">
  59. =end
  60. # 设置下拉框
  61. ie.select_list(:name, "selectme").select('Python') # 使用text属性和值来设置下拉框
  62. ie.select_list(:name, "selectme").select_value('2') # 使用value属性和值来设置下拉框
  63. # 使用name属性和值来清除下拉框
  64. ie.select_list(:name, "selectme").clearSelection
  65. =begin
  66. 对应的HTML代码为:
  67. <select name = "selectme">
  68. <option value = 1>Ruby
  69. <option value = 2>Java
  70. <option value = 3>Python
  71. <option value = 4>C
  72. </select>
  73. =end
  74. # 文本的框设置
  75. ie.text_field(:name, "typeinme").set("Watir World")
  76. # 清空文本输入框
  77. ie.text_field(:name, "typeinme").clear
  78. =begin
  79. 对应的HTML代码为:
  80. <input type = "text" name = "typeinme">
  81. =end
  82. # 通过值或name属性点击button
  83. ie.button(:value, "Click Me").click
  84. ie.button(:name, "clickme").click
  85. =begin
  86. 对应的HTML代码为:
  87. <input type = "button" name = "clickme" value = "Click Me">
  88. =end
  89. # 通过值或name属性点击Submit
  90. ie.button(:value, "Submit").click
  91. ie.button(:type, "Submit").click
  92. ie.button(:name, "Submit").click
  93. =begin
  94. 对应的HTML代码为:
  95. <form. action = "submit" name = "submitform" method="post">
  96. <input type = "submit" value = "Submit">
  97. </form>
  98. =end
  99. # 表单中的图片按钮
  100. ie.button(:name, "doit").click
  101. =begin
  102. 对应的HTML代码为:
  103. <form. action = "submit" name = "doitform" method="post">
  104. <input type="image" src = "images/doit.gif" name = "doit">
  105. </form>
  106. =end
  107. # 没有按钮的表单
  108. ie.form(:name, "loginform").submit # 通过name,action以及method属性来提交表单
  109. ie.form(:action, "login").submit
  110. =begin
  111. 对应的HTML代码为:
  112. <form. action = "login" name = "loginform" method="get">
  113. <input name="username" type="text">
  114. </form>
  115. =end
  116. # 框架
  117. ie.show_frames #可以打印出当前页面框架的数量和名称
  118. # Watir允许通过名称属性来访问框架
  119. ie.frame("menu")
  120. # 如果要访问menu框架中的一个超链接,可以
  121. ie.frame("menu").link(:text, "Click Menu Item").click
  122. # 嵌套框架
  123. ie.frame(:name, "frame1").form(:name, 'form1')
  124. # 新窗口
  125. # 一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。
  126. ie2 = Watir::IE.attach(:url, 'http://www.text.com/')
  127. ie3 = Watir::IE.attach(:title, 'Test New Window')
  128. # 也可以使用正则表达式
  129. ie4 = Watir::IE.attach(:title, /Test New/)
  130. # 注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字
  131. # 访问Table元素:
  132. t = $ie.table(:id,"data")
  133. t = Table.new($ie,:id,"data")
  134. t = $ie.table[1]
  135. # tr,td元素
  136. tr = ie.row(:id,"title")
  137. tr = TableRow.new(ie,:id,"title")
  138. td = ie.cell(:id,"name")
  139. td = TableCell.new(ie,:id,"name")
  140. # Watir中Table,TableBody,TableRow,TableCell这几个类,都提供了一个索引方法"[](index)"来定位其下一层的子元素对象,该方法为实例方法,"index"为传入的参数,索引值从1开始,而非从0开始。
  141. # 用法如下:
  142. # 以table的第一行,第一个元素为例:
  143. tr1 = t.[](1)
  144. td1 = tr1.[](1)
  145. # 也可以连续访问:td1 = t.[](1).[](1)
  146. # 如果td中还有其他元素,可以通过td的实例方法直接访问,以checkbox为例:
  147. cb = td1.checkbox(:id,'navigate_id').click
  148. =begin
  149. 对于以上所提到的对象,都是从Element继承而来,所以click,enabled?,exists?,fireEvent,flash,focus等方法都直接可以使用。
  150. 如果你的td元素定位准确了,且鼠标响应事件没有错误的话,那么应该能看到点击后的效果。
  151. 建议多查一下Watir的API Reference http://wtr.rubyforge.org/rdoc/
  152. =end
  153. # 代码如下:
  154. t = ie.table(:id,"CoolMenu2menutable")
  155. td_logout=t.[](1).[](16)
  156. # 先找到Table,再索引TR,再索引到TD
  157. # 运行Ruby时不显示browser方法
  158. # 运行Ruby程序文件时在后面加 "-b"
  159. # ex:
  160. test.rb -b
  161. # 也可以做成.bat文件
  162. ex: test.bat
  163. ruby.exe test.rb -b
  164. # 获取隐含对象值
  165. # <INPUT type=hidden value="您的Email" name="field1">
  166. values = ie.hidden(:name, 'field1').value
  167. # 获取窗口对象
  168. # 方法1:
  169. ie2 = Watir::IE.attach(:url,'http://www.google.cn/') #根据URL获取
  170. # 方法2:
  171. ie3 = Watir::IE.attach(:title,'Google') #根据窗口标题获
  172. # 方法3:
  173. ie4 = Watir::IE.attach(:title, /google.cn/) #正则表达式匹配获取
3十一/100

转:Python脚本直解