2013-07-05 64 views
12

シナリオ: - iFrameテキストエディタとページ内にボタンがあるページがあります。 - 親フレームからiFrameに切り替えて、テキストエディタ本体から読み込みました。 - テキストエディタ本体から読み込んだ後、ページの親フレームのボタンをクリックします。 - このため、次のステートメントを使用してiFrameから親フレームに切り替えようとしました: webDriver.SwitchTo()。DefaultContent(); - しかし、私は親フレームにあるボタン要素を見つけることができません。iFrameから親フレームに切り替え、Selenium Webdriverを使用して親フレームの要素を検索します。 C#

私はあなたの助けに感謝します! ありがとう

+0

は、我々はのHTMLを見ることができますIFrame – Arran

答えて

13

あなたの回答の皆さんのためにあります。それは解決される!

ソリューション:

  • 私はwebDriver.SwitchTo().DefaultContent();を使用していますが、それはページの一番上のウィンドウにwebDriverを切り替えます。 [以前はこのウィンドウのボタン要素を探していたので、ページのメインフレームにボタンがあるので、それを見つけることができませんでした]

  • メインウィンドウに切り替えた後、私はwebDriverに再度切り替えましたページのメインフレームに移動します。このメインフレームにはボタン要素があります。こうして私はボタン要素を見つけることができました。そして、これが問題になった!

だから、最終的なコードはwebDriver.SwitchTo().DefaultContent();を持っていませんが、そのかわりに、次のい:

_webDriver.SwitchTo().Window(windowHandle); 
    _webDriver.SwitchTo().Frame("mainFrame"); 

注:上記のコードでwindowHandleは、ページの一番上のウィンドウのハンドルです。私はそれがブラウザに応じて変わるかもしれないと思うが、確かではない。

6

私は同様の問題に苦しんで、私はWindow Handleで切り替えることが分かった。

string currentWindow = Driver.CurrentWindowHandle; 
// switch to frame and do stuff.. 
Driver.SwitchTo().Window(currentWindow); // switch back 
2

私の場合は次のコードがうまく働いた:

driver.switchTo().parentFrame(); 
関連する問題