浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Watir利用autoit处理JavaScript Pop Ups

2009年9月23日

问题:
最近朋友做了一个投票活动,给每个活动参与者加200积分,他使用的discuz论坛,看他一个一个加,我就是用Watir写了几行代码自动提交,无奈的 是提交的时候弹出的confirm确认框,要挨个挨个点击确定,很不方便,最终在OpenQA上找到了解决方案,利用autoit可以解决 confirm、prompt、alert等弹出框问题。
代码:

  1. require 'watir'
  2. require 'win32ole'
  3.  
  4. def check_for_popups(title="Window Internet Explorer", button="OK")
  5.     popup=Thread.new {
  6.         autoit=WIN32OLE.new('AutoItX3.Control')
  7.         ret=autoit.WinWait(title,"",30)
  8.         if (ret==1)
  9.             puts "There is popup."
  10.             autoit.WinActivate(title)
  11.             button.downcase!
  12.             if button.eql?("ok") || button.eql?("yes") || button.eql?("continue")
  13.                 autoit.Send("{Enter}")
  14.             else
  15.                 autoit.Send("{tab}")
  16.                 autoit.Send("{Enter}")
  17.             end
  18.         elsif (ret==0)
  19.             puts "No popup, please check your code."
  20.         end
  21.     }
  22.     at_exit { Thread.kill(popup) }
  23. end
  24.  
  25.  
  26. ie = Watir::IE.new
  27. ie.speed = :fast
  28. username = 'username'
  29. password = 'password'
  30. nones = ''
  31. filename = 'username.txt'
  32.  
  33. ie.goto('http://www.eetop.cn/bbs/logging.php?action=login')
  34. if    ie.contains_text('用户名')
  35.     ie.text_field(:name, "username").set(username)
  36.     ie.text_field(:name, "password").set(password)
  37.     ie.button(:name, "loginsubmit").click
  38. end
  39.  
  40. file = File.new(filename,'r');
  41. while line = file.gets
  42.     line.to_s.strip!
  43.     if line!=nones
  44.         puts line
  45.         ie.goto('http://www.eetop.cn/bbs/memcp.php?action=credits')
  46.         ie.text_field(:name, "password").set(password)
  47.         ie.text_field(:name, "to").set(line.to_s)
  48.         ie.text_field(:name, "amount").set('200')
  49.         ie.text_field(:name, "transfermessage").set('积分奖励')
  50.         ie.button(:name, "creditssubmit").click_no_wait
  51.         check_for_popups("Message from webpage", "OK")
  52.     end
  53. end
  54.  
  55. ie.close

参考:
http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups

posted on 2010-12-27 14:46  lexus  阅读(361)  评论(0编辑  收藏  举报