1

我试图能够自动化点击使用 watin 内置在 javascript 中的链接的过程。

在网页的源代码中,链接看起来像 href="#",所以我认为这些链接适用于 Javascript。

Runscript 不适用于“link.click”之类的 Javascript 代码。当我使用“link.flash()”时,我可以看到链接闪烁,所以我确定脚本单击链接但没有效果(并且脚本不会崩溃)。

你有解决这个问题的想法吗?

编辑:链接类是自动生成的

这里是 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>

ETC.....

是的,这太可怕了......,唯一的解决方案是通过 Text 选择到 div 中。

它在 Firefox 工具中的 slate 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 回答