无法在LI标记内单击带有图像的锚点

时间:2011-08-26 06:57:44

标签: watir browser-automation

我有像

这样的HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Transitional//EN">
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<HTML>
  <BODY class=" ext-border-box ext-ie ext-ie7 ext-windows" style="OVERFLOW: hidden">
    <DIV class=" x-viewport x-component x-border-layout-ct" id="x-auto-0" style="WIDTH: 1280px; HEIGHT: 862px" __eventBits="16384">
      <DIV class=" x-panel x-component x-border-panel" id="x-auto-9" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; LEFT: 224px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 1054px; TOP: 35px; BORDER-RIGHT-WIDTH: 0px">
        <DIV class="x-panel-bwrap"><DIV class="x-panel-body x-panel-body-noheader" style="WIDTH: 1054px; HEIGHT: 775px" __eventBits="16384">
          <DIV class=" x-tab-panel x-component" id="x-auto-17" hideFocus style="WIDTH: 1052px" __eventBits="6909">
            <DIV class="x-tab-panel-header x-unselectable" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 1052px" unselectable="on">
              <DIV class="x-tab-strip-wrap" style="WIDTH: 1052px" role="presentation">
                <UL class="x-tab-strip x-tab-strip-top">
                  <LI class="x-tab-strip-closable  x-component x-tab-strip-active " id="x-auto-17__x-auto-180" hideFocus style="MozOutline: none" __eventBits="125" role="tab">
                    <A class="x-tab-strip-close" role="presentation"></A>
                  </LI>
                </UL>
              </DIV>
            </DIV>
          </DIV>
        </DIV>      
      </DIV>
    </DIV>
  </DIV>
</BODY>
</HTML>

我无法点击具有class属性的<A>标记的对象。我试过用三种不同的方法

1. ie.link(:class,"x-tab-strip-close").click
2. ie.li(:class,"x-tab-strip-closable  x-component x-tab-strip-active ").link(:class,"x-tab-strip-close").click
3. ie.li(:xpath,"//li[@class='x-tab-strip-close']").click

所有这三种类型都导致元素未找到异常。请让我知道如何点击该元素。

3 个答案:

答案 0 :(得分:0)

嘿只是尝试做类似

的事情
 .link(:class, "x-tab-strip-closable x-component x-tab-strip-active").exist? == true
        begin
             browser.link(:class, "x-tab-strip-closable x-component x-tab-strip-active").click

          rescue => e
              rescueHandle(e)
          end
 else
     puts "FAILED! Could not find Class for Component"
         return false
  end

我想如果出现一些错误,你会知道更多。

答案 1 :(得分:0)

这应该适用于您提供的HTML:

browser.link(:class => "x-tab-strip-close").click

如果找到“找不到元素”,请检查链接是否在框架中。它也可能是一个计时问题,当你正在寻找它时,链接不存在。

答案 2 :(得分:0)

这看起来像是一些自定义选项卡控件的一部分,它使用了很多在客户端上运行的CSS和javascript。我可以在Sencha“Ext JS”社区论坛中找到一些有类似名称的帖子。看看他们的一些samples

与任何具有大量客户端代码执行CSS和其他魔术的页面一样,您可能需要在页面加载后等待一两秒才能执行客户端代码。所以这将是我会尝试的第一件事。

如果没有,我注意到很多选项卡代码正在创建onmouseover事件,当鼠标悬停在选项卡上时,DOM的内容会随时更改,因此您可能必须先查看是否可以先启动'on -mouseover'事件在尝试点击该项目之前,可能会从可以点击该项目的状态获取该事件。

其他具有相似标签名称的人是'EXT.NET'我再次在他们的论坛中找到这些类名出现的内容。我还可以在其示例页面中找到一些示例(这是关闭选项卡的按钮),用于某些选项卡。关于等待或首先尝试使用的类似建议也适用于此。

如果首先触发事件不起作用,并且我对控件的来源是正确的,请查看您是否可以在他们的示例/示例中的某处找到您的控件,如果是,请发布链接,这将让人们在这里与该风格的控件进行交互,让我们有更好的机会弄清楚是什么让它变得有趣。

我们还有几个月前来自Watir google小组的人similar request,但原始海报(“Mahesh”)从未回复过潜在的答案,所以不知道他们是否/如何解决问题。