watir中的超时和Windows控制台错误

时间:2015-07-16 11:55:41

标签: watir watir-webdriver

我尝试使用Watir gem进行自动化测试。我需要测试是否可以从桌面上传图像文件。 angular-js内容

<input aria-invalid="false" tabindex="0" class="ng-pristine ng-valid 
ng-touched"   
ng-model="user.photo" 
onchange="angular.element(this).scope().file_selected(event)" type="file"> 

红宝石脚本

require 'watir'
require 'watir-webdriver'
require 'watir-webdriver/wait'
browser =  Watir::Browser.new :firefox
browser.goto 'https://54.69.254.137/webui#/landing'
browser.driver.manage.window.maximize
browser.button(:class =>'sign-in md-button md-default-theme').click
browser.text_field(:id =>'input_001').set('abcadmin@example.com')
browser.text_field(:id =>'input_002').set('password')
browser.button(:class =>'md-primary md-raised md-button md-default-theme').click
browser.button(:class =>'md-icon-button md-primary main-menu-toggle 
md-button md-default-theme').when_present.click
browser.link(:text =>'Edit Profile').when_present.click
imagefile = "C://Users//Admin-pc//Desktop//images.jpg"
browser.input(:class =>'ng-pristine ng-valid ng-touched').when_present(60).click
myAutoIT = WIN32OLE.new("AutoitX3.Control")
myAutoIT.WinWaitActive("File Upload","",15) 
myAutoIT.Send("{ALT}n") 
myAutoIT.Send(imagefile) 
myAutoIT.ControlClick("File Upload","","&Open")
browser.element(aria_label:'Remove').click

我收到以下错误

irb(main):019:0> imagefile = "C://Users//Admin-pc//Desktop//images.jpg
=> "C://Users//Admin-pc//Desktop//images.jpg"
<put(:class =>'ng-pristine ng-valid ng-touched').when_present(60).click
Watir::Wait::TimeoutError: timed out after 60 seconds, waiting for {:class =>   
"ng-pristine ng-valid ng-touched", :tag_name=>"input"} to become present
from C:/Bitnami/rubystack-1.9.3-28/ruby/lib/ruby/gems/1.9.1/gems/watir-  
webdriver-0.8.0/lib/watir-webdriver/wait.rb:41:in `until'
from C:/Bitnami/rubystack-1.9.3-28/ruby/lib/ruby/gems/1.9.1/gems/watir-
webdriver-0.8.0/lib/watir-webdriver/wait.rb:119:in `method_missing'
from (irb):20
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):021:0> myAutoIT = WIN32OLE.new("AutoitX3.Control")
NameError: uninitialized constant WIN32OLE
from (irb):21
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):022:0> myAutoIT.WinWaitActive("File Upload","",15)
NoMethodError: undefined method `WinWaitActive' for nil:NilClass
from (irb):22
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):023:0> myAutoIT.Send("{ALT}n")
NoMethodError: undefined method `Send' for nil:NilClass
from (irb):23
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):024:0> myAutoIT.Send(imagefile)
NoMethodError: undefined method `Send' for nil:NilClass
from (irb):24
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):025:0> myAutoIT.ControlClick("File Upload","","&Open")
NoMethodError: undefined method `ControlClick' for nil:NilClass
from (irb):25
from C:/Bitnami/rubystack-1.9.3-28/ruby/bin/irb:12:in `<main>'
irb(main):026:0> exit

它给出了超时错误。但是,如果我在控制台上手动输入

browser.input(:class =>'ng-pristine ng-validng-touched').when_present(60).click 

输入类型有效。如果有人帮我理解这些错误有什么帮助我纠正它,我真的很感激。

0 个答案:

没有答案
相关问题