シナリオ:-iFrameテキストエディターとページ内のボタンを備えたページがあります。 -親フレームからiFrameに切り替えて、テキストエディターの本体から読み取ります。-テキストエディターの本体から読み取った後、ページの親フレームのボタンをクリックします。 -このため、次のステートメントを使用して、iFrameから親フレームに切り替えようとしました:webDriver.SwitchTo()。DefaultContent(); -しかし、それでも親フレームにあるボタン要素を見つけることができません。
私はあなたの助けに感謝します!ありがとう
それはあなたの応答の人のためのものです。解決しました!
ソリューション:
私はwebDriver.SwitchTo().DefaultContent();
を使用していますが、webDriver
をページの一番上のウィンドウに切り替えます。 [以前はこのウィンドウでボタン要素を探していたため、ボタンがページのメインフレームに配置されていたため、ボタン要素を見つけることができませんでした]
メインウィンドウに切り替えた後、webDriver
をページのメインフレームに再度切り替えました。このメインフレームにはボタン要素がありました。このようにして、ボタン要素を見つけることができました。そして、これは問題を解決しました!
したがって、最終的なコードにはwebDriver.SwitchTo().DefaultContent();
がありませんが、代わりに次のコードが含まれています。
_webDriver.SwitchTo().Window(windowHandle);
_webDriver.SwitchTo().Frame("mainFrame");
注:上記のコードのwindowHandleは、ページの一番上のウィンドウのハンドルです。値はブラウザによって変わるかもしれませんが、確かではありません。
私は同様の問題で苦労していて、Window Handle
によって元に戻すことができることがわかりました。
string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
私の場合、次のコードはうまくいきました:
driver.switchTo().parentFrame();