【问题标题】:Determine if an HTML div is clickable确定 HTML div 是否可点击
【发布时间】:2013-09-18 08:15:48
【问题描述】:

我正在做一些 Selenium/Robot Framework 自动化测试,我需要一种方法来自动定位可点击的 div 标签。

如果我给它一个非常具体的 CSS 选择器,Click Element 关键字就可以解决问题,但是我怎样才能通过算法找到一个可以被点击的元素呢?只要有办法获取 DOM 节点,我就希望返回一个唯一的选择器,我可以用它来调用 Click Element 关键字。

我了解旧版本的 jQuery 有 $(element).data('events') 可能用于查找点击侦听器,但这似乎是一种不可靠的方法。此外,Chrome 网络检查器似乎无法识别我正在查看的 divs 的任何 click 侦听器。

为了完整起见,以下是我正在使用的 HTML 示例:

<div id="contentarea" class="">
  <div id="contentwrapper" style="opacity: 1;">
    <div class="rap">
      <div id="twocol" class="clearfix margintop">
        <div class="leftcol scrollable addprogram">
          <a href="..." class="newgroup">
            <span class="addicon"></span>New Group
          </a>
        </div>
        <div class="rightcol clearfix">
          <ul class="subtabs rounded clearfix">
            <li data-tab="pending" class="selected">
              <a href="..." class="selected">Released</a>
            </li>
          </ul>
          <div class="clear"></div>
          <div id="program-grid" class="clearfix" style="">
            <div class="program groups" tabindex="0">
              <div class="programframe"></div>
              <div class="programinfo">
                <h1 class="prizeheight">Development</h1>
              </div>
              </div><div class="program groups" tabindex="0">
              <div class="programframe"></div>
              <div class="programinfo">
                <h1 class="prizeheight">Loss Prevention/Safety Group</h1>
              </div>
... 
...

&lt;div class='program groups'&gt; 是一个可点击元素,我希望以编程方式识别它。

为了记录,HTML 是有效的等等。缩小的 Javascript 以某种方式呈现此源,并可能附加侦听器。

谢谢!

【问题讨论】:

  • 如果您可以发布您正在使用的 HTML 示例,那将很有帮助。

标签: javascript dom selenium listener robotframework


【解决方案1】:

根据this website,这可能是不可能的。

注册了哪些事件处理程序?

W3C的事件注册目前实现的一个问题 模型是您无法确定是否已经有任何事件处理程序 注册到一个元素。在传统模型中,您可以这样做:

alert(element.onclick) 你会看到注册到的函数 它,如果没有注册,则为 undefined。仅在其最近的 DOM 中 3 级事件 W3C 添加一个 eventListenerList 来存储事件列表 当前在元素上注册的处理程序。这 任何浏览器尚不支持该功能,它太新了。 不过问题已经解决了。

幸运的是 removeEventListener() 如果事件没有给出任何错误 您要删除的侦听器尚未添加到元素中,所以当 如有疑问,您始终可以使用 removeEventListener()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2011-04-02
    • 1970-01-01
    • 2011-11-26
    • 2016-05-24
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多