我正在开展一些Selenium / Robot Framework自动化测试,我需要一种方法来自动定位可点击的div
标签。
如果我给它一个非常具体的CSS选择器,那么<strong> Click Element 关键字可以解决这个问题,但是如何在算法上找到一个可以点击的元素呢?只要有一种获取DOM节点的方法,我希望返回一个可用于调用 Click Element 关键字的唯一选择器。
我知道旧版本的jQuery有$(element).data('events')
可能用于查找点击侦听器,但它似乎是一种不可靠的方法。此外,Chrome网络检查员似乎无法识别我正在查看的click
的任何div
听众。
为了完整起见,这是我正在使用的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>
...
...
<div class='program groups'>
是一个可点击的元素,我希望以编程方式识别。
对于记录,HTML有效等等。缩小的Javascript以某种方式呈现此源,并且可能附加了侦听器。
谢谢!
答案 0 :(得分:0)
根据this website,这可能是不可能的。
注册了哪些事件处理程序?
当前实施W3C事件注册的一个问题 model是你无法找出是否已经有任何事件处理程序 注册到元素。在传统模型中,你可以做到:
alert(element.onclick),您会看到已注册的功能 它,或如果没有注册任何未定义。只在最近的DOM中 3级事件W3C添加了一个eventListenerList来存储事件列表 当前在元素上注册的处理程序。这个 任何浏览器都不支持这种功能,它太新了。 但是,问题已得到解决。
幸运的是,如果事件发生,removeEventListener()不会给出任何错误 你想删除的监听器还没有被添加到元素中,所以当 有疑问,你总是可以使用removeEventListener()。