1

別のウォーターの問題。このコードはadd_task...

ログイン後、認証ウィンドウが閉じ、ログインキーでメインウィンドウに戻ります。しかし、私はこのエラーが発生します:

やあ

add_task のテスト

[リモートサーバー] file:///var/folders/3w/b7rcpqfj7kl3wtv56jt99yx00000gn/T/webdriver-profile20120919-9069-1ua1lm9/extensions/fxdriver@googlecode.com/components/command_processor.js:10212:in `unknown': Window not見つかった。ブラウザ ウィンドウが閉じられている可能性があります。(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
4

1 に答える 1

1

問題は、サインインポップアップウィンドウに切り替えた後、スクリプトがそこから切り替わらないことだと思います。そのため、add_task 中にリンクをクリックしようとすると、サインイン ポップアップが閉じられます。

メソッドでは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。)

于 2012-09-19T21:48:07.360 に答える