2012-08-08 11 views
6

ポップアップウィンドウにあるiframeの要素を選択したいと思います。私はポップアップウィンドウ内に行くことができますが、iframeを見つけることができません。以下は、ポップアップウィンドウのhtmlコードです。Selenium Webdriverでiframeを見つけることができません(java)

<html> 
<head></head> 
<body> 
<iframe width="100%" height="100%" border="0" src="/some/url.do?parameter=getData"> 
<html> 
. 
. 
<table id="ec_table" class="tableRegion" width="20%" cellspacing="1" cellpadding="2" 
border="0"> 
<tr class="even"> 
<td> 
<input type="radio" value="173" name="hier_data_id"> 
</td> 
</tr> 
. 
. 
</html> 
</iframe> 
</body> 
</html> 

ここでは、iframeの内側にあるラジオボタンをクリックします。私はiframeで切り替えるために以下のコードを使用しましたが、iframeに切り替えることはありません。

driver.switchTo().frame(myD.findElement(By.tag("iframe"))); 

iframeにはidがないため、iframe内の要素を見つけるのが難しいと思っています。

どのように私はそれを行うことができるか知っています..?

ありがとうございます。 iframeのよう

答えて

6

です。

]

//go to popup 
//switch to the first frame , assuming there's only one frame with no id or name 
driver.switchTo().frame(0); 
driver.findElement(By.name("hier_data_id")).click(); 
+0

多くのありがとう、それは働いた。 –

2

はidがHEREを参照しており、

<iframe width="100%" height="100%" border="0" id="iframe" 
        src="/some/url.do?parameter=getData"> 

を次のようにあなたの答えであり、あなたは、そのインデックスによってフレームに切り替えることができ、あなたのコードは

driver.switchTo().frame(myD.findElement(By.id("iframe"))); 
+0

を切り替えることができ、テキスト「テストデータ」

$x = $I->grabAttributeFrom('//iframe', 'id'); $I->switchToIframe($x); $I->fillField('#tinymce', 'Test data'); $I->switchToWindow();' 

を入力します。コード(iframe id)、まだiframe要素を特定できません。奇妙なことは、テストケースがタイムアウト制限を超えても失敗していないことです。詳細が必要な場合はお知らせください。 –

0

//iframe[@src="/some/url.do?parameter=getData「しかし、これはタイミング&ロードの問題かもしれません:以下のことを試してみてください。したがって、コンテンツが読み込まれる前に、iframeを作成/読み込み/インタラクトしようとしている可能性があります。要素を選択する前に要素をチェックしてみてください。それが存在しなければ待ってください。ここ

0

は、私が上記で試してみましたiFrameを選択するためのコードであり、あなたは、2つのiFrame次々と持っている場合は、この機能によって

$I->switchToWindow(); 
関連する問題