フレームにIDがない場合に、Selenium WebDriverでフレームを識別して切り替える方法 質問する

フレームにIDがない場合に、Selenium WebDriverでフレームを識別して切り替える方法 質問する

タイトルのみの iframe を識別して切り替える方法を教えてください。

<iframe frameborder="0" style="border: 0px none; width: 100%; height: 356px; min-width: 0px; min-height: 0px; overflow: auto;" dojoattachpoint="frame" title="Fill Quote" src="https://tssstrpms501.corp.trelleborg.com:12001/teamworks/process.lsw?zWorkflowState=1&zTaskId=4581&zResetContext=true&coachDebugTrace=none">

以下のコードを試しましたが、動作しません

driver.switchTo().frame(driver.findElement(By.tagName("iframe")));

ベストアンサー1

driver.switchTo().frame()複数のオーバーロードがあります。

  1. driver.switchTo().frame(name_or_id)
    ここでは、iframeID も名前もないので、あなたには適していません。

  2. driver.switchTo().frame(index)
    これは最後の選択肢です。インデックスの使用は想像するほど安定していないからです。これがページ内の唯一のiframeである場合は、driver.switchTo().frame(0)

  3. driver.switchTo().frame(iframe_element)
    最も一般的な方法です。他の要素と同様に iframe を見つけて、それをメソッドに渡します。

ここでは、属性によって見つけるのがtitle最善のようです。

driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']")));
// driver.switchTo().frame(driver.findElement(By.xpath(".//iframe[@title='Fill Quote']")));

おすすめ記事