2012-09-19 76 views
1

另一個watir問題。此代碼一直運行到add_task ...watir webdriver - 窗口未找到

登錄後,授權窗口關閉,並使用登錄密鑰返回主窗口。但是,我得到這個錯誤:

hi there

testing add_task

[remote server] file:///var/folders/3w/b7rcpqfj7kl3wtv56jt99yx00000gn/T/webdriver-profile20120919-9069-1ua1lm9/extensions/[email protected]/components/command_processor.js:10212:in `unknown': Window not found. The browser window may have been closed. (Selenium::WebDriver::Error::NoSuchWindowError)

require 'rubygems' 
require 'test/unit' 
require 'watir-webdriver' 

class Login 
def basic_auth(logintype,usr,pwd) 
    $browser.goto("http://change.com") 
    $browser.link(:class,'joinchange').wait_until_present 
    join_link = $browser.link(:class,'joinchange') 
    join_link.click 

    $browser.window(:title, 'Sign In').wait_until_present 
    $browser.window(:title, 'Sign In').use 
    if logintype == 'fb' 
     $browser.link(:name, 'login-facebook id=').click 
     $browser.text_field(:id,'email').set(usr) 
     $browser.text_field(:id,'pass').set(pwd) 
     puts 'form submit' 
     sleep 3 
     $browser.form(:id,'login_form').submit 
     puts 'hello world' 
    else 
     $browser.text_field(:id,'lgnId').set('changes') 
     $browser.text_field(:id,'pwdId').set('letmeinnow') 
     sleep 3 
     $browser.form(:name,'LoginActionForm').submit 
     puts 'hi there' 
    end 
end 
def add_task 
    puts "testing add_task" 
    $browser.link(:class,'nextStep').click 
end 

end 

$browser = Watir::Browser.new 
login = Login.new 
login.basic_auth('test','usr','pwd') 
sleep 3 
login.add_task 

回答

1

我認爲,問題是,切換到登錄彈出窗口後,該腳本不切換出來。因此,在add_task嘗試點擊鏈接時,它正在Sign In彈出窗口中嘗試,該窗口已關閉。

basic_auth方法中,您想要將想要在彈出框中執行的操作作爲塊傳遞給window.use方法。

所以,你想:

$browser.window(:title, 'Sign In').use do 
    if logintype == 'fb' 
     $browser.link(:name, 'login-facebook id=').click 
     $browser.text_field(:id,'email').set(usr) 
     $browser.text_field(:id,'pass').set(pwd) 
     puts 'form submit' 
     sleep 3 
     $browser.form(:id,'login_form').submit 
     puts 'hello world' 
    else 
     $browser.text_field(:id,'lgnId').set('changes') 
     $browser.text_field(:id,'pwdId').set('letmeinnow') 
     sleep 3 
     $browser.form(:name,'LoginActionForm').submit 
     puts 'hi there' 
    end 
end 

(注意do添加在第一線,並在年底額外end結束)

+0

它給了我的語法錯誤,DMOZ目錄,期待$結束 – tv4free

+0

對不起,意外丟失了if語句的'end'。代碼已更新。 –

+0

非常感謝。有效。 – tv4free