2016-10-05 12 views
0

角度2アプリケーション内のiframe要素にアクセスする必要がある分度器を使用してe2eテストを作成しています。分度器のiframe要素が見つからない/表示されない

私は正常にiframeに切り替えたと思いますが、何らかの理由で、私が選択したい要素が、 "css id selector ....で要素が見つかりませんでした"または "element is表示されません。

は、ここに私のコードです:私は要素を検査する際

this.fillOutInfo = function(input){ 

this.selectBox.click().then(function(){ 
    browser.switchTo().frame(this.selectBox) 
    .then(function(){ 
     browser.findeElement(by.id('recurly-hosted-input-field')).sendKeys(input) 
     .then(function(){ 
      browser.switchTo().defaultContent(); 
      }) 
     }) 
     }) 
    } //selectBox references the iframe element within the DOM 

idは上記のコードで明らかに存在するが、何らかの理由でそれがアクセスされていません。私の機能は正しく実装されていませんか?私はすでにネストされたロケータのような必要な入力を見つけるためのさまざまな方法を試しましたが、何も機能していません。

ご協力いただきありがとうございます。

+0

「then」のネストされたconsole.logを持っていますか?分度器で約束する方法は? –

+0

あなたは 'browser.findeElement'と言いました。それはタイプミスですか? –

+0

@SudharsanSelvarajはい、申し訳ありませんが、実際のコードではなく、stackoverflowのtypoです –

答えて

0

を役に立てば幸い、私は私のために働いたソリューションに到着しました。ここでは、次のとおりです。

this.fillOutInfo = function(input){ 

this.selectBox.click().then(function(){ 
    browser.ignoreSynchronization = true; 
    browser.switchTo().frame(0) 
    .then(function(){ 
     element(by.id('recurly-hosted-input-field')).sendKeys(input) 
     .then(function(){ 
      browser.switchTo().defaultContent(); 
      }) 
     }) 
     }) 
    } 

私は二つのことだったと思う:1)ignoreSyncronizationを追加し、2)インデックスではなく、ロケータに基づいてスイッチフレームコンテキスト。

1

それはsudharsanのselvarajで指摘したように、これはあなたが同じIDであるどのように多くの要素をお知らせします

element.all(by.id('recurly-hosted-input-field')).count().then(function(count) { 
console.log("Number of elements with same id: " + count);}); 

を試してみてください誤植ではない場合。同じロケータプロパティを持つ間違った要素を使って作業していたので、私にも起こりました。

が、それはいくつかのより多くの研究と実験後

+0

ここにあなたの応答に感謝します。私は以前に述べたはずだったのは、複数のiframeがありますが、それぞれの中に上記のIDを持つタグが1つしかありません。私は正しいiframeを選択していることを知っています。これは、1行目で最初にクリックしているためです。 –

関連する問題