2011-06-17 41 views
0

我正在使用watin在Web系统(内部)上自动执行进程。Watin - 找不到链接元素(Javascript)

我可以打开网站并访问一些链接,但其他人无法找到。我认为这可能是因为它们深度嵌套或因为href是javascript。这是他们的格式:

<frame> 
    <html> 
     <frameset> 
     <frame> 
     <html> 
     <body> 
      <div> 
      <table> 
      <table> 
      <tr> 
       <td> 
       <a id="1_1_1_a" href="javascript:blah" </a> 

我试过各种不同的方式来找到id,元素类型等,但我坚持这一点。

任何人都可以帮忙吗?

由于帧内

回答

0

元件必须通过其框架被搜索,因为每个帧被认为在华廷一个单独的名称空间。因此,首先得到正确的框架(通过调用框架方法或通过框架属性 - 请注意,在你的榜样,你必须做两次,你有两个嵌套的框架),然后搜索链接,如:

ie.Frames[0].Frames[0].Link("1_1_1_a") 
+1

嗨,感谢您的回复。 我试图使用框架(Find.ByName)和框架(Frind.BySrc)来识别框架,但它无法找到框架。 有没有一种方法可以查看watin可以访问/查看哪些元素? – Scottland

0

试试这个

 using (var browser = new IE("your_web_site_here")) 
     { 
      try 
      { 
      Frame first_frame = browser.Frame(Find.ById("frame_1_id")); 
      Frame second_frame = first_frame.Frame(Find.ById("frame_2_id")); 
      var first_div = second_frame.Div(Find.ById("first_div_id")); 
      Assert.IsTrue(first_div.Exists); 
      var Link_to_click = first_div.Link(Find.ById("1_1_1_a")); 
      Assert.IsTrue(Link_to_click.Exists); 
      Link_to_click.Click(); 
      } 
      catch (Exception ex) 
      { 

      } 
     } 

有时候华廷找不到元素我仍然试图找出为什么,什么是前提条件。

0

我有一个类似的问题,我的测试将浏览到一个页面上有40个链接,即使您可以看到页面上的所有链接,下面的语句将显示链接(和其他元素集合)有一个计数为零。

ie.Links.Count(); 

我仍然不知道潜在的问题是什么,但我发现,如果你开始加利奥伊卡洛斯/加利奥回声/ Visual Studio中(或任何测试运行使用的是)由右键 - >运行作为管理员,测试按预期工作,并且元素正确加载到ie浏览器对象中。