function performClick() {
    function click(element) {
        if (element === null) {
            return;
        }
        var event = document.createEvent("MouseEvent");
        event.initMouseEvent(
            "click",
            true /* bubble */ ,
            true /* cancelable */ ,
            window,
            null,
            0, 0, 0, 0, /* coordinates screenX, screenY, clientX, clientY */
            false, false, false, false, /* modifier keys */
            0 /*button:left*/ , null
        );
        element.dispatchEvent(event);
    }

    var element = document.body.firstChild;
    var banner = element.querySelector('div[data-responsive],div[onclick],a,div');

    if (!banner) {
        banner = element.firstChild;
    }
    click(banner);
}

function wrapWindowOpen() {
    function getWindowOpenSource() {
        var error;
        try {
            throw new Error('windowOpenTracer');
        } catch (e) {
            error = e;
        }
        if (error && error.stackArray) {
            return error.stackArray[error.stackArray.length - 1];
        }
    }

    window.__windowOpenCallers = [];
    window.open = function (url, target) {
        window.__windowOpenCallers.push({
            url: url,
            target: target,
            time: Date.now(),
            trace: getWindowOpenSource()
        });
    };
}

function collectWindowOpen() {
    return window.__windowOpenCallers;
}

module.exports = {
    'onHalfTime': function (api) {
        api.switchToIframe();
        api.evaluate(wrapWindowOpen);
        setTimeout(function () {
            api.switchToIframe();
            api.evaluate(performClick);
        }, 50);

    },
    'onBeforeExit': function (api) {
        api.switchToIframe();
        api.set('windowOpened', api.evaluate(collectWindowOpen));

    }
};

@@ -13,18 +13,29 @@
 form
-Click
+UserInteraction
 () %7B%0A
+%0A
     
@@ -47,21 +47,22 @@
 ion 
-click
+action
 (element
 ) %7B%0A
@@ -57,16 +57,22 @@
 (element
+, type
 ) %7B%0A    
@@ -231,15 +231,12 @@
     
-%22click%22
+type
 ,%0A  
@@ -767,20 +767,107 @@
     
-click(banner
+action(banner, 'mouseover');%0A    setTimeout(function()%7B%0A        action(banner, 'click');%0A    %7D, 100
 );%0A%7D
@@ -1578,32 +1578,76 @@
 unction (api) %7B%0A
+        api.set('actionTime', +new Date());%0A
         api.swit
@@ -1801,13 +1801,23 @@
 form
-Click
+UserInteraction
 );%0A 

Add action time to filter out new requests. Partly implemented