我试图能够使用 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>
等等......
是的,这太可怕了......,唯一的解决方案是通过文本选择到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());
最佳答案
如果链接类是“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)...
}
关于c# - 使用 watin 自动点击使用 Javascript 构建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818927/