2017-03-08 8 views
0

Snapshot私は、分度器を使用してiframe内のドロップダウンをクリックする必要があります。JavaScript in protractor

インラインフレーム:

<iframe src="swagger-ui/index.html" frameborder="0" marginheight="0" marginwidth="0" 
     width="100%" height="900" scrolling="auto" target="_top" class="ng-scope"> 
</iframe> 

ドロップダウン:

<select id="select_baseUrl" name="select_baseUrl"> 
    <option value="1">default (1)</option> 
    <option value="2">eventui (2)</option> 
    <option value="3">eventservice (3)</option> 
</select> 

私は

var eeel = browser.executeScript("document.getElementByTagName('iframe') 
        .contentWindow.document.getElementById('select_baseUrl').click();"); 

browser.wait(eeel,200000); 
console.log("Lv2"); 

でもない作業を試してみました。

+0

私はこの問題を解決しました。 ................................ browser.driver.switchTo()。frame(0).then(function() { \t \t \tはconsole.log( '今FN1のSRC1内部'); \t \t \t browser.driver.sleep(5000); browser.driver.findElement(by.id( 'select_baseUrl')))(クリック; \t \t \tはconsole.log( '今FN2 SRC1'); \t \t \t browser.driver.switchTo()defaultContent(); \t \t})。 –

答えて

0

あなたはこの場合には不要なexecuteScript()機能を悪用しています。分度器(基礎となるWebdriver.js)は、使用してIフレームを切り替えることができます:ほとんどの場合

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

をページ上に表示最初のiframeを返す必要があります0を使用しますが、存在する場合より多くのあなたが見つけなければなりません適切なインデックス番号。

交換したら、通常通りに要素を見つけることができます。しかし、一度やり直すと、デフォルトのウィンドウに戻る必要があります。browser.driver.switchTo().defaultContent();

+0

私はこれに新しいです、申し訳ありません。私はこれを既に試してみましたが、defaultContent()は関数ではありません。私がそれを取り除いて試してみると、分度器がページと同期するのを待っている間エラーが表示される: –

+0

問題の原因を調べるためにコードをもっと投稿する必要があります。 – codemon

+0

これで十分ですが、browser.driver.switchTo()。frame(0); \t \t要素(by.xpath( "// select [@ = 'select_baseUrl']"))。 \t \t browser.driver.switchTo.defaultContent();ありがとうございます –