我试图能够自动化点击使用 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());