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

JavascriptExecutor on Selenium Webdriver instance throwing exception on navigating to other page

本文关键字:其他 异常 导航 实例 Webdriver JavascriptExecutor Selenium      更新时间:2023-09-26

我正试图通过在webdriver实例上注入javascript evenslisteners来记录用户操作-点击、按键等其他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

localStorage.setItem('key', JSON.stringify(events)); 

然后检索

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