サーチ…


構文

  • 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秒で表示されない場合にのみ例外をスローする}



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow