2016-05-18 25 views
1

分度器バージョン3.3.0を使用して、非角形アプリケーションのe2eテストを作成しています。 私のアプリはiframe内に別の非角型アプリケーションをロードしています。私は、分度器を使ってiframeにテストを書き込もうとしています。分度器:Iframeに非角型アプリケーションをテストする

私は本当のbrowser.driver.ignoreSynchronization =を使用して、上記を試してみました:不明なエラー:

1.

var EC = protractor.ExpectedConditions; 
var button = $("div[automation-id='homescreen']") 
var isClickable = EC.elementToBeClickable(button); 

browser.wait(isClickable, 50000).then(function(){ 
     browser.driver.sleep(500); 
     button.click(); 
}) 

に失敗しましたエラー」を受信要素は、(326、624ポイントでクリック可能ではありません)... "

2.

var loc = by.id('myFrame'); 
el = browser.driver.findElement(loc) 
browser.driver.switchTo().frame(el); 

エラーを受信した" 失敗:なしそのような要素:要素が見つかりません:{ "方法": "CSSセレクタ"、 "選択": "* [ID =" MyFrameと "]"}」

もELが正常に取得されたと考え..

browser.driver.switchTo().frame(0); 

3.インデックス1と試みず、受信した "失敗しました:そのようなフレームを.." エラー

browser.driver.getAllWindowHandles() 

1つのウィンドウのみを受信しました...

答えて

0

これがページ上の唯一のiframeである場合、オプション3は有望です。私はちょうどそれに切り替える前に存在することがiframeを待ちたい:

// wait for the frame to be present 
var EC = protractor.ExpectedConditions; 
browser.wait(EC.presenceOf(element(by.tagName("iframe"))), 5000); 

// switch to frame 
browser.driver.switchTo().frame(0); 
+0

残念ながら、これは唯一のiframeではありません。browser.driver.getCurrentUrl()でurlをチェックすると、アプリケーションの開始時と同じURLが返されます。 – lital

+0

@lital 'getCurrentUrl()'は同じURLを返しますが、これはあなたが同じページにとどまっているためです。私が提案したコードでエラーが出ない場合は、実際にはiframeのコンテキストに切り替えました。 – alecxe

+0

iFrameに表示されるボタンをクリックできないため、動作しないようです。複数のiframeがある場合、iframeをどのように切り替える必要がありますか? – lital

0

は非アンギュラページ

browser.driver.switchTo()の場合はインラインフレーム

に切り替えるにはdefaultContentを。 ();

browser.driver.switchTo()。フレーム( "フレームIDまたはクラス名");

0

すると、この次のコードを試してみてください、IFRAMEは、私は自分のアプリケーションとその作業中のため、上記のコードを使用

browser.ignoreSynchronization = true; 
return browser.switchTo().frame(iFrameEle.getWebElement()) 
      .then(function(){ 
       // in the iframe.. 

      }) 
      .then(function(){ 
       // restore sync for angular 
       browser.ignoreSynchronization = false; 
       return browser.switchTo().defaultContent(); 
      }); 
0
var elem = element(by.xpath('.//div[contains(@id,\'contents\') and contains(@id,\'cke\')]/iframe')); 
     browser.sleep(3000); 
     elem.click(); 
     browser.switchTo().frame(elem.getWebElement()); 
     browser.sleep(3000); 
     element(by.tagName('body')).sendKeys('test'); // entering text on iframe 
     browser.switchTo().defaultContent(); 
     browser.sleep(3000); 

角度アプリに属していません。それがあなたを助けることを願ってください。 最初にiframeをクリックしてからフォーカスを移動します。

注:私は睡眠時間を与えると、その作業だけです。

関連する問題