watin を使用して JavaScript で作成されたリンクをクリックするプロセスを自動化できるようにしようとしています。
ウェブページのソースコードでは、リンクは href="#" のようになっているので、これらのリンクは Javascript で動作すると思います。
Runscript は、「link.click」のような Javascript コードでは機能しません。「link.flash()」を使用すると、リンクのフラッシュが表示されるので、スクリプトがリンクをクリックしていると確信していますが、効果はありません (スクリプトはクラッシュしません)。
この問題を解決するためのアイデアはありますか?
edit : リンク クラスは自動的に生成されます
ここにHTMLコード:*はすべて名前が自動的に生成されます
<div class="******" id="ext-gen***">
<ul class="**********" id="ext-gen***">
<li class="******" id="***************">
<a class"*****" href="#" id="ext-gen***">
<em class="********">
<span class="*******">
<span class="*********"> LINK 1 </span>
</span>
</em>
</a>
</li>
<li class="******" id="***************">
<a class"*****" href="#" id="ext-gen***">
<em class="********">
<span class="*******">
<span class="*********"> LINK 2 </span>
</span>
</em>
</a>
</li>
等.....
ええ、それは恐ろしいです...、唯一の解決策は、テキストでdivを選択することです。
Firefoxのツールではスレートjavascriptで動いているのですが、watinでRunscriptを挿入すると動きません。
Runscript を使用したコードは次のとおりです。
StringBuilder myScript = new StringBuilder();
myScript.AppendLine("javascript: ");
myScript.AppendLine(" var link = document.getElementsByTagName('a'), i;");
myScript.AppendLine(" for (i in link)");
myScript.AppendLine(" {");
myScript.AppendLine(" if ((' ' + link[i].text + ' ').indexOf(' ' + '" + name + "' + ' ') > -1) ");
myScript.AppendLine(" {");
myScript.AppendLine(" link[i].click();");
myScript.AppendLine(" break; ");
myScript.AppendLine(" }");
myScript.AppendLine(" }");
Thread.Sleep(100);
ie.RunScript(myScript.ToString());