1

私はNightWatchJSを使用していくつかのオートメーションを書いています。私は私がものログインアクション後に要素を見つけることができません

  1. URLを開く
  2. にログイン
  3. を次の操作を行い、簡単なテストシナリオは、私は送信ボタンで簡単なログインページを持っているのiframe要素

を確認してください要素

  • を確認しています。内側のページには、ログイン後にiframeもあります。ログインアクションが成功すると、iframe内のテキストフィールドにはjavascriptが設定されます。エル・キャピタン - それは私がクロム50、ChromeDriver 2.21.371459、OS Xの使用しています

    Timed out while waiting for element <body> to be present for 10000 milliseconds. - expected "visible" but got: not found 
    

    を言って失敗した後

    マイナイトウォッチテストコード

    module.exports = { 
        before: function(browser) { 
        console.log("Setting up..."); 
        browser 
         .maximizeWindow() 
        }, 
    
        after : function(browser) { 
        browser 
         .end() 
        console.log("Closing down..."); 
        }, 
    
        'Check Form Elements' : function (browser) { 
        browser 
         .url("siteurl") 
         .waitForElementVisible("body", 1000) 
         .waitForElementPresent('#email', 10000) 
         .setValue('#email','[email protected]') 
         .waitForElementPresent('#password', 10000) 
         .setValue('#password', 'encrypted') 
         .submitForm('#login_form', function(result){ 
         console.log(result) 
         }) 
         .pause(5000) 
         .waitForElementVisible('body', 10000) 
         .waitForElementVisible('li.active', 5000) 
         .assert.containsText('li.active', "Home") 
         .assert.elementPresent('#iframeone') 
         .frame('iframeone') 
         .waitForElementVisible('.wi-wrap', 5000) 
         . assert.containsText('header h1', 'Messages') 
        } 
    }; 
    

    このテストでは、フォームの送信まで渡します。 以下にセレンの詳細を添付しました。事前に

    Selenium Details

    感謝。

  • 答えて

    0

    ログインに成功したページはリダイレクトされますか?

    あなたはこれを試すことができます:

    browser 
        .url("siteurl") 
        .waitForElementVisible('#email', 10000,false) 
        .setValue('#email','[email protected]') 
        .setValue('#password', 'encrypted') 
        .click('#login_form') 
        .waitForElementVisible('li.active', 5000,false) 
        .verify.containsText('li.active', "Home") 
        .verify.elementPresent('#iframeone') 
        .frame('#iframeone') 
        .waitForElementVisible('.wi-wrap', 5000,false) 
        .verify.containsText('header h1', 'Messages') 
    

    は、フレームIDが見つからないかnullの場合、サーバはページのデフォルトのコンテンツに切り替える必要がありますRememeber。だからセレクターは以下のようになっていなければなりません。

    'input[name=username]', 
    'button[name=login]', 
    'iframe[class=iframeone]' 
    

    編集1:要素 '身体' について、あなたの代わりに '目に見えるかどうか'

    の 'が存在かどうか' を確認する必要がありwaitForElementPresent('body',5000,false)

    代わりの

    waitForElementVisible('body',5000,false)

    を試してみてください
    +0

    Hey Bao、ログインに問題はありません。私はページ内でレンダリングされたすべての要素を見ることができますが、そのような要素が見つからないのでテストは失敗します。 – a5his

    +0

    waitForElementVisibleに引数をもう1つ追加して、assertをverifyに置き換えることができます。どの要素が間違っていたかを確認できるように、テストは失敗します。 –

    +0

    '.waitForElementVisible( 'body'、5000、false)'を追加してクリックした後に、テストコードにlilの変更を加えました。 – a5his

    関連する問題