Module appium.webdriver.extensions.log_event

Expand source code
#!/usr/bin/env python

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import Dict, List, TypeVar, Union

from selenium import webdriver

from ..mobilecommand import MobileCommand as Command

T = TypeVar('T', bound='LogEvent')


class LogEvent(webdriver.Remote):

    def get_events(self, type: List[str] = None) -> Dict[str, Union[str, int]]:
        """ Retrieves events information from the current session
        (Since Appium 1.16.0)

        Args:
            type (:obj:`list` of :obj:`str`): The event type to filter with

        Usage:
            events = driver.get_events()
            events = driver.get_events(['appium:funEvent'])

        Returns:
            `dict`: A dictionary of events timing information containing the following entries
                commands: (`list` of `dict`) List of dictionaries containing the following entries
                    cmd: (str) The command name that has been sent to the appium server
                    startTime: (int) Received time
                    endTime: (int) Response time
        """
        data = {}
        if type is not None:
            data['type'] = type
        return self.execute(Command.GET_EVENTS, data)['value']

    def log_event(self, vendor: str, event: str) -> T:
        """Log a custom event on the Appium server.
        (Since Appium 1.16.0)

        Args:
            vendor (str): The vendor to log
            event (str): The event to log

        Usage:
            driver.log_event('appium', 'funEvent')

        Returns:
            `appium.webdriver.webdriver.WebDriver`
        """
        data = {
            'vendor': vendor,
            'event': event
        }
        self.execute(Command.LOG_EVENT, data)
        return self

    # pylint: disable=protected-access

    def _addCommands(self) -> None:
        self.command_executor._commands[Command.GET_EVENTS] = \
            ('POST', '/session/$sessionId/appium/events')
        self.command_executor._commands[Command.LOG_EVENT] = \
            ('POST', '/session/$sessionId/appium/log_event')

Classes

class LogEvent (command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False, file_detector=None, options=None)

Controls a browser by sending commands to a remote server. This server is expected to be running the WebDriver wire protocol as defined at https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

:Attributes: - session_id - String ID of the browser session started and controlled by this WebDriver. - capabilities - Dictionaty of effective capabilities of this browser session as returned by the remote server. See https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities - command_executor - remote_connection.RemoteConnection object used to execute commands. - error_handler - errorhandler.ErrorHandler object used to handle errors.

Create a new driver that will issue commands using the wire protocol.

:Args: - command_executor - Either a string representing URL of the remote server or a custom remote_connection.RemoteConnection object. Defaults to 'http://127.0.0.1:4444/wd/hub'. - desired_capabilities - A dictionary of capabilities to request when starting the browser session. Required parameter. - browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested. Optional. - proxy - A selenium.webdriver.common.proxy.Proxy object. The browser session will be started with given proxy settings, if possible. Optional. - keep_alive - Whether to configure remote_connection.RemoteConnection to use HTTP keep-alive. Defaults to False. - file_detector - Pass custom file detector object during instantiation. If None, then default LocalFileDetector() will be used. - options - instance of a driver options.Options class

Expand source code
class LogEvent(webdriver.Remote):

    def get_events(self, type: List[str] = None) -> Dict[str, Union[str, int]]:
        """ Retrieves events information from the current session
        (Since Appium 1.16.0)

        Args:
            type (:obj:`list` of :obj:`str`): The event type to filter with

        Usage:
            events = driver.get_events()
            events = driver.get_events(['appium:funEvent'])

        Returns:
            `dict`: A dictionary of events timing information containing the following entries
                commands: (`list` of `dict`) List of dictionaries containing the following entries
                    cmd: (str) The command name that has been sent to the appium server
                    startTime: (int) Received time
                    endTime: (int) Response time
        """
        data = {}
        if type is not None:
            data['type'] = type
        return self.execute(Command.GET_EVENTS, data)['value']

    def log_event(self, vendor: str, event: str) -> T:
        """Log a custom event on the Appium server.
        (Since Appium 1.16.0)

        Args:
            vendor (str): The vendor to log
            event (str): The event to log

        Usage:
            driver.log_event('appium', 'funEvent')

        Returns:
            `appium.webdriver.webdriver.WebDriver`
        """
        data = {
            'vendor': vendor,
            'event': event
        }
        self.execute(Command.LOG_EVENT, data)
        return self

    # pylint: disable=protected-access

    def _addCommands(self) -> None:
        self.command_executor._commands[Command.GET_EVENTS] = \
            ('POST', '/session/$sessionId/appium/events')
        self.command_executor._commands[Command.LOG_EVENT] = \
            ('POST', '/session/$sessionId/appium/log_event')

Ancestors

  • selenium.webdriver.remote.webdriver.WebDriver

Subclasses

Methods

def get_events(self, type=None)

Retrieves events information from the current session (Since Appium 1.16.0)

Args

type (:obj:list of :obj:str): The event type to filter with

Usage

events = driver.get_events() events = driver.get_events(['appium:funEvent'])

Returns

dict: A dictionary of events timing information containing the following entries commands: (list of dict) List of dictionaries containing the following entries cmd: (str) The command name that has been sent to the appium server startTime: (int) Received time endTime: (int) Response time

Expand source code
def get_events(self, type: List[str] = None) -> Dict[str, Union[str, int]]:
    """ Retrieves events information from the current session
    (Since Appium 1.16.0)

    Args:
        type (:obj:`list` of :obj:`str`): The event type to filter with

    Usage:
        events = driver.get_events()
        events = driver.get_events(['appium:funEvent'])

    Returns:
        `dict`: A dictionary of events timing information containing the following entries
            commands: (`list` of `dict`) List of dictionaries containing the following entries
                cmd: (str) The command name that has been sent to the appium server
                startTime: (int) Received time
                endTime: (int) Response time
    """
    data = {}
    if type is not None:
        data['type'] = type
    return self.execute(Command.GET_EVENTS, data)['value']
def log_event(self, vendor, event)

Log a custom event on the Appium server. (Since Appium 1.16.0)

Args

vendor : str
The vendor to log
event : str
The event to log

Usage

driver.log_event('appium', 'funEvent')

Returns

WebDriver

Expand source code
def log_event(self, vendor: str, event: str) -> T:
    """Log a custom event on the Appium server.
    (Since Appium 1.16.0)

    Args:
        vendor (str): The vendor to log
        event (str): The event to log

    Usage:
        driver.log_event('appium', 'funEvent')

    Returns:
        `appium.webdriver.webdriver.WebDriver`
    """
    data = {
        'vendor': vendor,
        'event': event
    }
    self.execute(Command.LOG_EVENT, data)
    return self