一个web功能自动化测试工具应该具备三个基础属性:
1.可以定位web的DOM元素,这个我在前面的定位已经讲过了
2.可以执行js脚本,这个不仅是上一章说的执行js,还包括对控件的写js操作
3.模拟键盘鼠标进行操作。
前两点,已经在前面都谈过了,下面讲讲第三点,模拟操作,首先说说模拟键盘操作:
如果用过Selenium的话,会知道神奇的send_keys几乎涵盖了所有的输入操作,那么Watir-webdriver也是一样的模拟键盘的操作,可以使用这条命令,比方说,我想在页面上大一个回车
b.send_keys :enter
当然你会遇到组合键和连续按键,可以这样做
b.element.send_keys [:control, 'a'], :backspace
额,神奇的事情还有
b.text_field.send_keys("hello")
当然别忘了,鼠标单击的时候,你想加入其他按键
b.element.click(:shift, :control)
好吧,几乎是无所不能的键盘模拟啊,下面了列出一些特殊按键的名称以供参考:
require 'rubygems' require 'selenium-webdriver' dr = Selenium::WebDriver.for :firefox select_file = 'file:///'.concat File.expand_path(File.join(File.dirname(__FILE__), 'fire_event.html')) dr.navigate.to select_file m = dr.find_element(:css => '.mo') 10.times do dr.action.move_to(m).perform end
#要求ruby1.8.x require 'Win32API' #定义API GetCursorPos和SetCursorPos的接口 get_cursor_pos = Win32API.new("user32","GetCursorPos",['p'],'v') $set_cursor_pos = Win32API.new("user32","SetCursorPos",['i']*2,'v') #获取鼠标位置 lpPoint =" " * 8 #初始化存储位置信息的变量 get_cursor_pos.Call(lpPoint) #调用API x, y = lpPoint.unpack("LL") #将传回的参数转换为两个无符号的长整数 puts "当前鼠标的坐标为: #{x}, #{y}" #设置鼠标位置 def setm(new_xy) p new_xy $set_cursor_pos.Call(new_xy[0], new_xy[1]) end 100.times{ setm([rand*800,rand*600]) sleep 0.01 }