0

RadRails IDE でのテストに watir を使用します。[削除] ボタンをクリックすると、[Web ページからのメッセージ] ウィンドウが表示され、本当にレコードを削除するかどうかを確認できます。[OK] のクリックをシミュレートするにはどうすればよいですか? ここに私が試す方法があります:1) ie=Watir::IE.new ie.execute_script("window.alert = function() {}") - have no effect

2)ie1.button(:name, "delete_action").click ie4.execute_script("window.confirm = function() {return true}")

エラーを取得 -Task.rb:140:in '<main>: undefined local variable or method 'ie4' for main:Object (NameError)

3)ie1.button(:name, "delete_action").click ie1.execute_script("window.confirm = function() {return true}")

効果なし

4) `def startClicker( ボタン , waitTime = 3)

   w = WinClicker.new

   longName = ie.dir.gsub("/" , "\\" )

   shortName = w.getShortFileName(longName)

   c = "start rubyw #{shortName }\\watir\\clickJSDialog.rb #{button }

#{ waitTime} "

   puts "Starting #{c}"

   w.winsystem(c)

   w=nil

 end`

そして、置きます

   `ie1.button(:name, "delete_action").click

   startClicker("OK" , 3)

   ie.button("Submit").click`

Web ページからのメッセージが表示された後。エラーを取得:

E:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/modal_dialog.rb:3:in 'initialize': Watir no longer supports WinClicker. Please use click_no_wait and the javascript_dialog method. (NotImplementedError) from Task.rb:12:in 'new' from Task.rb:12:in 'startClicker' from Task.rb:162:in '<main>'

5) テスト開始時のコード

`def check_for_popups

autoit = WIN32OLE.new('AutoItX3.Control')

loop do

    ret = autoit.WinWait('Message from webpage', '', 1)

    if (ret==1) then autoit.Send('{enter}') end

    sleep(3)

 end  end`


Code after message from webpage appears

`ie1.button(:name, "delete_action").click 

$popup = Thread.new { check_for_popups } 

at_exit { Thread.kill($popup) } `

反応無し。

6) `require 'watir-classic\contrib\enabled_popup' を要求する

def startClicker(ボタン、waitTime=9、user_input=nil)

hwnd = $ie.enabled_popup(waitTime)

もし (hwnd)

w = WinClicker.new

if ( user_input )

  w.setTextValueForFileNameField( hwnd, "#{user_input}" )

end

sleep 3

w.clickWindowsButton_hwnd( hwnd, "#{button}" )

w=nil

end

終了`

Web ページからのメッセージの後にコードが表示される

`ie1.button(:name, "delete_action").click_no_wait

startClicker( "OK ", 7)`

メッセージを取得 - Task.rb:14:instartClicker': undefined method enabled_popup' for nil:NilClass (NoMethodError) from Task.rb:157:in'`

7)require 'watir/contrib/enabled_popup'

ウェブページからのメッセージの後のコードが表示されます -

`hwnd = browser.enabled_popup(5)

もし (hwnd)

popup = WinClicker.new

popup.makeWindowActive(hwnd)

popup.clickWindowsButton("Web ページからのメッセージ", "OK", "30")

終了`

Get error - E:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/win32.rb:19:inblock in ': 1.9 の DL API は 1.8 と互換性がありません。E:/Ruby193/lib/ruby/gems/1.9 のhttp://www.ruby-forum.com/topic/138277 (NotImplementedError) を参照してください。 1/gems/watir-classic-3.0.0/lib/watir-classic/contrib/enabled_popup.rb:11: call' from E:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/contrib/enabled_popup.rb:11:inE:/Ruby193/lib/ruby/gems/1.9.1/gems/watir からの「enabled_popup」のブロック-classic-3.0.0/lib/watir-classic/wait.rb:18:in until' from E:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/contrib/enabled_popup.rb:10:inenabled_popup' from Task.rb:145:in<main>'

8)`'watir-classic\contrib\enabled_popup' が必要です

def popupChecker(テキスト)

Timeout::timeout(2)do

    begin

        if $ie.enabled_popup

            hwnd = ie.enabled_popup(5)

            w = WinClicker.new

            w.makeWindowActive(hwnd)

            w.clickWindowsButton_hWnd(hwnd,text)

        end

    rescue Timeout::Error

        puts 'No popup existed'

    end

end

終了`

ウェブページからのメッセージの後のコードが表示されます -

`ie1.button(:name, "delete_action").click_no_wait

popupChecker('OK')

ie1.wait`

Task.rb:11:in '`からメッセージ: Task.rb:13:inblock in popupChecker': undefined method timeout' を取得しますenabled_popup' for nil:NilClass (NoMethodError) from E:/Ruby193/lib/ruby/1.9.1/timeout.rb:68:inpopupChecker' from Task.rb:158:in

9)`def check_for_popups(title="ウェブページからのメッセージ", button="OK")

popup=Thread.new {

    autoit=WIN32OLE.new('AutoItX3.Control')

    ret=autoit.WinWait(title,"",60)

    if (ret==1)

        puts "There is popup."

        autoit.WinActivate(title)

        button.downcase!

        if button.eql?("ok") || button.eql?("yes") || button.eql?("continue")

            autoit.Send("{Enter}")

        else

            autoit.Send("{tab}")

            autoit.Send("{Enter}")

        end

    elsif (ret==0)

        puts "No popup, please check your code."

    end

}

at_exit { Thread.kill(popup) }

終了`

ウェブページからのメッセージの後のコードが表示されます -

check_for_popups("Message from webpage", "OK")

反応無し

4

1 に答える 1

1

これを試して:

browser.alert.ok

詳細: http://watir.github.io/docs/javascript-dialogs/

于 2012-07-05T09:18:19.423 に答える