WebDriver.SwitchToFrame メソッド

本ページには広告が含まれています。

インデックス(ゼロベース)、name属性、id属性、またはWebElementで指定されたフレームにフォーカスを移します。このメソッドで取得できるHTML要素はframe、iframeのいずれかの要素です。

構文
  1. Boolean = WebDriver.SwitchToFrame( identifier, timeout, raise )
引数
identifier 必須
切り替えるフレームのインデックス、name属性、id属性、WebElement オブジェクトのいずれかを指定
timeout 省略可
タイムアウト(単位:ms)。raiseTrueが指定されている場合、時間が過ぎるとエラーが発生します。
raise 省略可
Trueのとき、タイムアウト経過後に例外を発生させる。
戻り値

使い方

フレームの数を取得

現在開いているページのiframe要素の数を取得します。

UWSC
WebElements = WebDriver.FindElementsByTag("iframe")
PRINT WebElements.Count

現在開いているページのframe要素の数を取得します。

UWSC
WebElements = WebDriver.FindElementsByTag("frame")
PRINT WebElements.Count

現在開いているページのframe要素もしくはiframe要素の数を取得します。WebDriver.SwitchToFrame メソッドの引数にインデックスを指定する場合は、0から以下の結果の値の範囲で指定することで要素を取得できます。

UWSC
WebElements = WebDriver.FindElementsByCss("frame, iframe")
PRINT WebElements.Count

インデックスからフレームを取得・切り替え

インデックスが0のフレームへ切り替えます。切り替えが出来たかを示すブール値が返り、問題なく切り替えが出来た場合はTrue、切り替えが出来なかった場合はFalseを返します。

UWSC
PRINT WebDriver.SwitchToFrame(0)

name属性・id属性からフレームを取得・切り替え

WebDriver.SwitchToFrame メソッドの引数に文字列を指定した場合、その文字列に一致するname属性、id属性を持つフレーム要素が取得されます。

以下はname属性もしくはid属性がcontentのフレームに切り替えます。

HTML
<iframe src="https://example.com" name="content" height="300" width="300"></iframe>
UWSC
WebDriver.SwitchToFrame("content")

WebElementオブジェクトからフレームを取得・切り替え

WebElement オブジェクトからフレームを切り替えます。

最初に見つかったクラス名mainのフレームに切り替えます。

HTML
<iframe src="https://example.com" class="main" height="300" width="300"></iframe>
UWSC
WebDriver.SwitchToFrame(WebDriver.FindElementByClass("main"))

以下は阿部寛のホームページで1つ目のフレーム(左側のメニュー)を取得し、リンクテキストが写真集のリンクをクリックします。

以下のHTMLはブログラムの動作に影響ない範囲で簡略化しています。

HTML
<html>
	<body>
		<frameset>
			<frame src="menu.htm">
				<html>
					<body>
						<a href="top.htm" target="right" rel="noopener">トップ</a>
						<a href="movie/eiga.htm" target="right" rel="noopener">映画出演</a>
						<a href="tv/tv.htm" target="right" rel="noopener">ドラマ出演</a>
						<a href="stage/butai.htm" target="right" rel="noopener">舞台出演</a>
						<a href="photo/photo.htm" target="right" rel="noopener">写真集</a>
						<a href="essay/essay.htm" target="right" rel="noopener">出版本</a>
						<a href="kanri/kanri.htm" target="right" rel="noopener">管理者</a>
					</body>
				</html>
			</frame>
			<frame src="top.htm"></frame>
		</frameset>
	</body>
</html>
UWSC
WebDriver.Get("http://abehiroshi.la.coocan.jp/")

WebDriver.SwitchToFrame(WebDriver.FindElementByTag("frame"))
WebElement = WebDriver.FindElementByLinkText("写真集")
WebElement.Click

src属性の値からフレーム要素を特定

frameタグはsrc属性が必須のため、XPathでフレーム要素を特定することもできます。

以下はsrc属性の値がmenu.htmのフレーム要素を取得します。

title属性やname属性で特定したい場合は@src@title@nameのように変更します。

UWSC
DIM WebElement = WebDriver.FindElementByXPath("//frame[@src='menu.htm']")
WebDriver.SwitchToFrame(WebElement)

親フレームに戻す

WebDriver.SwitchToFrame メソッドでフレームを切り替えたあと、元のフレームに戻したいときはWebDriver.SwitchToFrame メソッドを使います。

UWSC
WebDriver.SwitchToParentFrame()