c# - 使用 watin 自动点击使用 Javascript 构建链接

标签 c# javascript c#-4.0 watin run-script

我试图能够使用 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/

相关文章:

c# - 使用 lambda 表达式的嵌套集合创建对象图

c# - t4 "using"关键字

winforms - DataGridView右键菜单/复制示例?

c# - 异步方法可以从同步代码异步运行吗

c# - 如何使用 protobuf-net 进行 xml 序列化?

c# - 使用 C# 反射访问堆栈跟踪中的对象

c# - 如何使用LINQ获取Dictionary <string,List <Object>?

javascript - 有没有办法将 javascript 对象视为 JSON?

javascript - jquery函数中的目标AJAX id

javascript - 我如何向现有的 tinyMCE 按钮添加额外的功能?