1

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());
4

1 に答える 1

1

リンク クラスが「linkClass」の場合は、JavaScript コードを実行するだけで、次のコマンドを実行できます。

browser.Eval("$('.linkClass').click();")

編集:各リンククリックの間に何らかのアクションを実行する必要がありますか?

RunScript コマンドを使用しないでください。私はそれで悪い経験をしました。

これを試すことができます:

   var links = ie.Links;
   foreach (var link in links)
   {
       ie.Eval(string.Format("$('#{0}').click();", link.Id));
       //after click do your test (or not)...
   }
于 2012-12-12T05:53:45.190 に答える