我正在尝试获取网站上clicked元素(任何元素)的文本值,将其从javascript返回到Selenium(Python)并使用该信息将每个单击的元素放入我的日志中.甚至可以实现使用selenium和javascript?
此函数可以显示元素,但不会返回任何内容(正常的onclick行为).我知道我可以使用selenium从警报弹出窗口中读取文本,但是每次点击鼠标都会使我的浏览器闪烁.
function getEl() { var ev = arguments[0] || window.event, origEl = ev.target || ev.srcElement; alert(origEL.text) } document.onclick = getEl;
尝试访问javascript console.log现在似乎在Selenium中不起作用,所以使用console.log不是正确的答案.
我可以通过在click事件上向localstorage写入内容然后检查python中localstorage中的值来检测何时单击某个元素.但它并不普遍.我需要找到并设置我想要观察的每个元素.
function find_element() { aTags = document.getElementsByTagName("a"); searchText = "comments"; for (var i = 0; i < aTags.length; i++) { if (aTags[i].textContent == searchText) { found = aTags[i]; return found; } } } found=find_element(); function saveEvent() { localStorage.setItem("ZAD1.1", "1"); } if(found) { found.addEventListener("click",saveEvent,false); var x=localStorage.getItem("ZAD1.1"); if (x=="1") { count="comments link was clicked"; return count; } }
之后,你从python selenium调用javascript
z=driver.execute_script(javascript1) if z=="comments link was clicked": #do something with this information
有没有办法获取用户在浏览器中点击的对象的信息?我正在使用Selenium和Firefox.
编辑:您可以使用getEL()并在localstorage中写入每个onclick输出来获取每个单击的元素.
localStorage.setItem(origEl.text, origEl.text);
创建本地存储,然后将temp写为数组或字符串
var temp="VISITED LINKS : " for (var i = 0; i < localStorage.length; i++){ temp +=localStorage.getItem(localStorage.key(i))+" ";} return temp
然后你可以将整个列表返回给python.
你能想到将点击的对象发送到python的任何其他方法吗?