:Description: Trigger specified event of the given element.
        :param element: Element for browser instance to target.
        :type element: WebElement, (WebElement, ...)
        :param event: Event to trigger from target element.
        :type event: string, (string, ...)
        :param event_type: Event type.
        :type event_type: string
        :example: 'KeyboardEvent'
        :param options: Event options.
        :example: { 'bubbles': True, 'cancelable': False }
        :type options: dict

def trigger_event(self, element, event, event_type=None, options=None):
        """
        :Description: Trigger specified event of the given element.
        :param element: Element for browser instance to target.
        :type element: WebElement, (WebElement, ...)
        :param event: Event to trigger from target element.
        :type event: string, (string, ...)
        :param event_type: Event type.
        :type event_type: string
        :example: 'KeyboardEvent'
        :param options: Event options.
        :example: { 'bubbles': True, 'cancelable': False }
        :type options: dict
        """
        if not isinstance(element, (tuple, list)):
            element = [element]
        if not isinstance(event, (tuple, list)):
            event = [event]
        for el in element:
            for e in event:
                self.browser.execute_script(
                    'e = new %s("%s"); ops = %s; if (ops) {for(key in ops) { \
                        Object.defineProperty(e, key, { value: ops[key], configurable: true }) \
                    }} arguments[0].dispatchEvent(e)' % (
                        event_type if event_type else 'Event',
                        e, json.dumps(options) if options else 'undefined'
                    ), el)