6

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

<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内の要素を見つけるのが難しいと感じています。

誰かが私がそれを行うことができる方法を知っていますか..?

前もって感謝します。

4

4 に答える 4

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();
于 2012-08-09T14:44:27.867 に答える
2

iframeにはidがありますので、ここを参照てください。答えは次のとおりです。

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

そしてあなたのコードは

driver.switchTo().frame(myD.findElement(By.id("iframe")));
于 2012-08-08T15:41:16.447 に答える
0

//iframe[@src="/some/url.do?parameter=getData"]

ただし、これはタイミングと読み込みの問題である可能性があります。そのため、コンテンツが読み込まれる前に、iframeの書き込み/読み取り/操作を試みている可能性があります。要素を選択する前に、要素を確認してみてください。そして、それが存在しない場合は待ちます。

于 2014-04-18T05:38:37.950 に答える
0

iFrameを選択して「テストデータ」というテキストを入力するためのコードは次のとおりです

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

2つのiFrameが次々にある場合この機能を切り替えることができます

$I->switchToWindow();
于 2017-06-30T04:32:18.653 に答える