selenium-webdriver
スイッチングフレーム
サーチ…
構文
- Java
- driver.switchTo()。frame(ストリング名);
- driver.switchTo()。frame(ストリングid);
- driver.switchTo()。frame(int index);
- フレームワーク(WebElement frameElement)。
- driver.switchTo()。defaultContent();
- C#
- ドライバ.SwitchTo()。フレーム(int frameIndex);
- driver.SwitchTo()。フレーム(IWebElementのframeElement)。
- driver.SwitchTo()。フレーム(string frameName);
- デフォルトのコンテンツ。
- Python
- driver.switch_to_frame(nameOrId)
- driver.switch_to.frame(nameOrId)
- driver.switch_to_frame(index)
- driver.switch_to.frame(index)
- driver.switch_to_frame(frameElement)
- driver.switch_to.frame(frameElement)
- driver.switch_to_default_content()
- driver.switch_to.default_content()
- JavaScript
- driver.switchTo()。frame(nameOrId)
- driver.switchTo()。frame(index)
- driver.switchTo()。defaultContent()
パラメーター
パラメータ | 詳細 |
---|---|
nameOrId | idの名前でフレームを選択します。 |
索引 | ゼロベースのインデックスでフレームを選択します。 |
frameElement | 以前に配置されたWebElementを使用してフレームを選択する |
Javaを使用してフレームに切り替えるには
インスタンスの場合、htmlビューまたは要素のhtmlソースコードが次のようにiframeでラップされているとします。
<iframe src="../images/eightball.gif" name="imgboxName" id="imgboxId">
<p>iframes example</p>
<a href="../images/redball.gif" target="imgbox">Red Ball</a>
</iframe><br />
... iframeのWeb要素でアクションを実行するには、まず、以下のいずれかの方法を使用してフォーカスをiframeに切り替える必要があります。
フレームIDを使用する (iframeのIDを知っている場合にのみ使用してください)。
driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame
フレーム名を使用する (iframeの名前がわかっている場合にのみ使用してください)。
driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame
フレームインデックスを使用する (iframeのIDまたは名前がない場合にのみ使用する必要があります)。インデックスでは、すべてのフレームのiframeの位置が定義されます。
driver.switchTo().frame(0); //0 - Index of the frame
注意:ページに3つのフレームがある場合、最初のフレームはインデックス0に、2番目のフレームはインデックス1に、3番目のフレームはインデックス2になります。
以前に配置されたwebelementを使用する (既にフレームを見つけてWebElement
として返した場合のみ使用する)
driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame
Red Ball
アンカーをクリックするには:
driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();
Javaを使用してフレームから抜けるには
メイン文書またはページの最初のフレームのいずれかにフォーカスを切り替えます。以下の構文を使用する必要があります。
driver.switchTo().defaultContent();
C#を使用してフレームに切り替える
1.インデックスでフレームに切り替えます。
ここでは、インデックス1に切り替わります。インデックスは、ページ上のフレームの順序を参照します。フレームIDや名前がはるかに信頼できるため、これは最後の手段として使用する必要があります。
driver.SwitchTo().Frame(1);
2.名前でフレームに切り替えます。
driver.SwitchTo().Frame("Name_Of_Frame");
3. IWebElementを渡して、タイトル、IDなどでフレームに切り替えます。
IDまたはタイトルでフレームに切り替える場合は、Web要素をパラメータとして渡す必要があります。
driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));
また、フレームが表示されるまで数秒かかる場合は、 待機を使用する必要があります。
new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));
フレームから出る:
driver.SwitchTo().DefaultContent()
C#を使用してフレームから抜け出すには
メイン文書またはページの最初のフレームのいずれかにフォーカスを切り替えます。以下の構文を使用する必要があります。
webDriver.SwitchTo()。DefaultContent();
親フレームの子フレーム間の切り替え。
親フレーム(フレーム - 親)があるとします。 2つの子フレーム(Frame_Son、Frame_Daughter)。さまざまな条件や取り扱い方法を見てみましょう。
1.親から息子または娘から:
driver.switchTo().frame("Frame_Son");
driver.switchTo().frame("Frame_Daughter");
親から親へ:親がデフォルトフレームの場合は、デフォルトフレームに切り替え、それ以外の場合はデフォルトフレームから親フレームに切り替えます。しかし、あなたは息子から親に直接切り替えることはできません。
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
3.息子から娘まで:あなたの妹が何か間違いを犯した場合は、彼女の叫び声を聞かずに、あなたの親に手を差し伸べてください。同様に、親フレームと子フレームに制御を与えます。
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");
フレームが読み込まれるまで待ちます
かなりの場合、フレームがすぐに表示されず、スイッチがロードされるまで待つ必要があるかもしれません。それ以外の場合は、NoSuchFrameExceptionが発生します。
あなたが切り替える前に待つことは常に良い選択です。以下は、フレームがロードされるまで待つ理想的な方法です。
try{
new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
ignoring(WebDriverException.class).
until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
catch{
//あなたのフレームがあなたの待ち時間300秒で表示されない場合にのみ例外をスローする}