如何捕获用户点击JavaScript的* ANY *元素?

时间:2014-01-23 18:03:15

标签: javascript html firefox selenium

这是this question.

的后续行动

我们的想法是通过JavaScript获取用户在Firefox浏览器中点击的位置。 从命名问题开始,以下 JavaScript 代码几乎可以执行此操作:

var DocElements = document.getElementsByTagName('*');for(var i = 0; i < DocElements.length; i++){DocElements[i].onclick = function clicked(MyElement){var target = (MyElement.target) ? MyElement.target : MyElement.srcElement;var e = document.createElement('a'); e.setAttribute('id','myUniqueID'); e.setAttribute('value', this); target.appendChild(e);};}

此脚本插入ID为#34; myUniqueID&#34;在任何单击的元素中,脚本可以通过执行以下 python 代码来检索单击的文档:

resultss=browser.driver.find_element_by_id("myUniqueID") #This uses selenium driver engine.
resultss.find_element_by_xpath("..")  #This gets the parent node of selected one

JS代码旨在通过将自己附加到html代码中的所有项目来选择点击网站上的任何元素:

document.getElementsByTagName('*')

但是这个脚本失败了,因为它无法选择所有元素。例如,如果您点击月份/性别表单in google signup page,然后选择一个月,它将选择代表所选月份的元素,但不会检测the form上的第一次点击。因此,getElementsByTagName(&#39; *&#39;)不会挑选网站中的所有元素。

如何附加Javascript来运行 ALL 文档中的元素,没有例外?

1 个答案:

答案 0 :(得分:0)

我聘请了一名自由撰稿人来完成剧本。我非常接近,但由于我是Javascript中的新手,所以我花了很长时间才弄明白。我需要使用'onmousedown'代替'onclick'作为事件。生成的脚本如下:

var DocElements = document.getElementsByTagName('*');for(var i = 0; i < DocElements.length; i++){DocElements[i].onmousedown = function clicked(MyElement){var target = (MyElement.target) ? MyElement.target : MyElement.srcElement;var e = document.createElement('a'); e.setAttribute('id','myUniqueID'); e.setAttribute('value', this); target.appendChild(e);};}

我希望将来对其他人有用。