Watir 点击页面提示条及下拉菜单选项方法

先贴个图:

 

看了javaeye上某一高人关于如何用win32api点击ie提示条的文章,学习了这种方法,不过原文没有进一步说明,当点击提示条出现下拉选项时,应该如何点击相应的选项的方法,我自己用autoit解决了这个问题,代码如下:

 

先看原文中的windowsAPI module代码如下:

 

###################################################
#WindowsAPI Module
#############################################
module WindowsInput   
  # Windows API functions   
  SetCursorPos = Win32API.new('user32','SetCursorPos', 'II', 'I')   
  SendInput = Win32API.new('user32','SendInput', 'IPI', 'I')   
  # Windows API constants   
  INPUT_MOUSE = 0   
  MOUSEEVENTF_LEFTDOWN = 0x0002   
  MOUSEEVENTF_LEFTUP = 0x0004   
  MOUSEEVENTF_RIGHTDOWN = 0x0008   
  MOUSEEVENTF_RIGHTUP = 0x0010   
  
  module_function   
  
  def send_input(inputs)   
    n = inputs.size   
    ptr = inputs.collect {|i| i.to_s}.join # flatten arrays into single string   
    SendInput.call(n, ptr, inputs[0].size)   
  end  
  
  def create_mouse_input(mouse_flag)        
    mi = Array.new(7, 0)   
    mi[0] = INPUT_MOUSE   
    mi[4] = mouse_flag   
    mi.pack('LLLLLLL') # Pack array into a binary sequence usable to SendInput   
  end  
  
  def move_mouse(x, y)   
    SetCursorPos.call(x, y)   
  end  
  
  def right_click   
    rightdown = create_mouse_input(MOUSEEVENTF_RIGHTDOWN)   
    rightup = create_mouse_input(MOUSEEVENTF_RIGHTUP)   
    send_input( [rightdown, rightup] )   
  end  
  
  def left_click   
    leftdown = create_mouse_input(MOUSEEVENTF_LEFTDOWN)   
    leftup = create_mouse_input(MOUSEEVENTF_LEFTUP)   
    send_input( [leftdown, leftup] )   
  end  
end   

 原文中主程序引用部分代码如下:

 

x = $ie.document.parentWindow.screenLeft.to_i + 10   
y = $ie.document.parentWindow.screenTop.to_i - 10   
WindowsInput.move_mouse(x, y)   
WindowsInput.left_click  

 

 

我自己做了改进的代码如下:

 

$ie2.bring_to_front #需要将待操作的windows窗口置于前端,针对多窗口的情况
$ie2.maximize()    #特别注意窗口需要最大化,否则计算x,y坐标会出错
x = $ie2.document.parentWindow.screenLeft.to_i + 10   
y = $ie2.document.parentWindow.screenTop.to_i - 10   
WindowsInput.move_mouse(x, y)   
WindowsInput.left_click  
$autoit.Send('{DOWN}')#此处是用autoit来操作提示栏的下拉选项
$autoit.Send('{ENTER}')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值