Selenium Webdriver实例上的JavascriptExecutor在导航到其他页面时引发异常

Selenium Webdriver实例上的JavascriptExecutor在导航到其他页面时引发异常,java,javascript,selenium,selenium-webdriver,webdriver,Java,Javascript,Selenium,Selenium Webdriver,Webdriver,我正试图通过在webdriver实例上注入javascript监听器来记录用户的操作—单击、按键等其他DOM事件。这个很好用!但当我导航到下一页时,它给了我一个未定义函数的异常,因为DOM已经改变了。如何处理此异常 是否有一种方法可以在所有网页导航完成后将所有事件捕获到临时存储器中并读取 代码: ((JavascriptExecutor) driver) .executeScript("(function() { var events = []; wind

我正试图通过在webdriver实例上注入javascript监听器来记录用户的操作—单击、按键等其他DOM事件。这个很好用!但当我导航到下一页时,它给了我一个未定义函数的异常,因为DOM已经改变了。如何处理此异常

是否有一种方法可以在所有网页导航完成后将所有事件捕获到临时存储器中并读取

代码:

((JavascriptExecutor) driver)
    .executeScript("(function() {
        var events = [];
        window.addEventListener('click', function(e) {
            events.push([+new Date(), 'click', [e.clientX, e.clientY], e.target.name, e.target.id]);
        }, true);
        window.addEventListener('keypress', function(e) {
            events.push([+new Date(), 'keypress', e.target.name, e.target.id, String.fromCharCode(e.keyCode)]);
        }, true);
        window._getEvents = function() {
            return events;
        };
    })();
");

response = (ArrayList)((JavascriptExecutor) driver)
    .executeScript("return window._getEvents();");

我们可以使用本地存储

localStorage.setItem('key', JSON.stringify(events)); 
然后取回

return JSON.parse(localStorage.getItem('key'));