2016-04-07 14 views
2

私のAngularJSアプリケーションのポップアップウィンドウを切り替えようとしています。失敗:エントリのヌル値:name = nullポップアップウィンドウの切り替え中にエラーが発生しました

browser.ignoreSynchronization = true; 
    browser.getAllWindowHandles().then(function (handles) { 
     browser.switchTo().window(handles[1]); 

    }); 

次のエラー行き方::私のコードで、次の

Failed: null value in entry: name=null 
Stack: 
UnknownError: null value in entry: name=null 
+0

これは、ハンドル[1]が存在しない場合に発生します。おそらく、新しいタブが読み込まれる前に切り替えようとしています。 – KCaradonna

+0

この問題はChromeで発生する可能性があります。分度器でポップアップを起動すると、それに応じて名前を付ける必要があります。そうでない場合は、名前が「null」になり、そのポップアップに切り替えることができなくなります。 –

+0

こんにちはエイドリアン:私たちがそれをどうやってできるかを例を挙げて教えてください。 –

答えて

5

をあなたはは、それが実際にを開く前に、新しいタブに切り替えしようとしている可能性があります - ウィンドウハンドルを待つよりであることを数えます期待される条件との希望数より:

function windowCount(count) { 
    return function() { 
     return browser.getAllWindowHandles().then(function (handles) { 
      return handles.length >= count; 
     }); 
    }; 
}; 
browser.wait(windowCount(2), 10000); 

browser.getAllWindowHandles().then(function (handles) { 
    browser.switchTo().window(handles[1]); 
}); 
+0

no luck alexce:待ちタイムアウトのエラーが発生しました –

+0

@AbbasALI少なくともこれにより、新しいウィンドウが実際に開かれていないという情報が表示されます。FirefoxとChromeで同じ問題が発生しますか?ありがとう。 – alecxe

+0

@alexce:ポップアップウィンドウが開いています。私はbrowser.sleepを入れて確認しますが、処理していません。 –

0

AngularJSアプリケーションでは、ポップアップウィンドウのハンドルがありません。私たちはmoを取得する必要がありますdel idを入力して、要素を特定する必要があります。

例:

するvar alertPop =エレメント(by.id( 'popId'))

期待(alertPop.isDisplayed())toBeTruthy()。

var element = alertPop.element(by.model( 'vm.message'));