個別の HTML ページと見なすことができる子「フォーム」を埋め込むために iframe を使用する Web フォームを自動化する必要があります。
したがって、iframe であるビュー フィールドと呼ばれるものを含む親ドキュメントを取得します。iframe 内には、「子」の埋め込み Web ページがあります。
簡単な例:
適切なサイズに縮小するために、HTML から多くの部分を切り取りました。
<html>
<body>
<div id="123" arid=123 artype="View" ardbn="vfMyChild"
class="arfid123 ardbnvfMyChild"
STYLE="top:49 left:75 width:1038 height:322" arvfframe="<iframe style="top:0 left:0 width:1038; height:322" name="VF123" title="View Field" src="javascript:&quot;&lt;HTML&gt;&lt;/HTML&gt;&quot;" >
</iframe>">
</div>
</body>
</html>
次に、埋め込まれた子 html は次のように単純になります。
<html>
<body>
<div id="321" arid=321 artype="Char" ardbn="txtRegister">
<label id="label321" class="label f6">Register:</label>
<textarea id="arid_321" cols="20" maxlen=255 rows=1></textarea>
</div>
</body>
</html>
STYLE= に含まれる html は少し奇妙に見えます。なぜそうなのかはわかりません。しかし、iframe のようなものであることがわかります。
最上位のドキュメント オブジェクトのインスタンスと、id=123 の div のインスタンスがあります。子の textarea オブジェクトを自動化する必要があります。次のことを試しましたが、うまくいきませんでした。
var viewfields; //is a ref to the div with id=123
if(viewfields) {
window.alert("viewfields.length=" + viewfields.length); //prints len=1 as expected
// line below get Caught exception: Unable to get value of the
// property 'document': object is null or undefined
var innerDoc = viewfields[0].contentDocument || viewfields[0].contentWindow.document;
if(innerDoc) {
window.alert("Wohoo we have an innerDoc");
}
} else
window.alert("no view fields found");
私はIE9を使用してこれをテストしています。
この html を使用して内部 Web ページのインスタンスを取得できますか? もしそうなら、どのように?
編集
それが役立つ場合は、問題の div の実際の未編集の html を次に示します。
<div id="WIN_0_536870915" arid=536870915 artype="View" ardbn="vfCubaChildren" class="arfid536870915 ardbnvfCubaChildren" STYLE="top:49; left:75; width:1038; height:322;z-index:1001;background-color:transparent;" arvfframe="<iframe style="top:0&#59; left:0&#59; width:1038&#59; height:322&#59;background-color: transparent&#59;" name="VF536870915" frameborder=1 scrolling="auto" allowtransparency="true" title="View Field" src="javascript:&quot;&lt;HTML&gt;&lt;/HTML&gt; ;&quot;" onload="DVFol&#40;&#41;">
</iframe>">
</div>
その div は子フォームを保持します。子フォームは、別の HTML Web ページのようなものです。標準の html 入力フィールドとテキストエリアがあります。(親から)子のテキストエリアにテキストを投稿する必要があります。しかし、問題は、親から子 html オブジェクトにまだアクセスできないことです。