2012-12-11 32 views
1

我想能够自动化点击使用watin在JavaScript中建立的链接的过程。使用watin自动点击链接用JavaScript构建

在网页的源代码中,链接看起来像href =“#”,所以我认为这些链接与Javascript一起工作。

Runscript不支持Javascript代码,如“link.click”。 当我使用“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> 

等.....

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

它在Firefox的工具JavaScript中工作,但是当我插入它与Ruin的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()); 

回答

1

刚刚火的JavaScript代码,如果该链接类是 “linkClass” 运行此命令:

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)... 
    } 
+0

它不工作,我编辑我的职务。 –

+0

编辑我的回答 – alonp

+0

它工作吗?如何href =#选择? – MT467