Module appium.webdriver.extensions.ime

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 List, TypeVar

from selenium import webdriver

from ..mobilecommand import MobileCommand as Command

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


class IME(webdriver.Remote):

    @property
    def available_ime_engines(self) -> List[str]:
        """Get the available input methods for an Android device.

        Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME'])
        Android only.

        Returns:
            :obj:`list` of :obj:`str`: The available input methods for an Android device
        """
        return self.execute(Command.GET_AVAILABLE_IME_ENGINES, {})['value']

    def is_ime_active(self) -> bool:
        """Checks whether the device has IME service active.
        Android only.

        Returns:
            bool: `True` if IME service is active
        """
        return self.execute(Command.IS_IME_ACTIVE, {})['value']

    def activate_ime_engine(self, engine: str) -> T:
        """Activates the given IME engine on the device.

        Android only.

        Args:
           engine (str): the package and activity of the IME engine to activate
               (e.g., 'com.android.inputmethod.latin/.LatinIME')

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

    def deactivate_ime_engine(self) -> T:
        """Deactivates the currently active IME engine on the device.

        Android only.

        Returns:
            `appium.webdriver.webdriver.WebDriver`
        """
        self.execute(Command.DEACTIVATE_IME_ENGINE, {})
        return self

    @property
    def active_ime_engine(self) -> str:
        """Returns the activity and package of the currently active IME engine(e.g., 'com.android.inputmethod.latin/.LatinIME').

        Android only.

        Returns:
            str: The activity and package of the currently active IME engine
        """
        return self.execute(Command.GET_ACTIVE_IME_ENGINE, {})['value']

    # pylint: disable=protected-access

    def _addCommands(self) -> None:
        self.command_executor._commands[Command.GET_AVAILABLE_IME_ENGINES] = \
            ('GET', '/session/$sessionId/ime/available_engines')
        self.command_executor._commands[Command.IS_IME_ACTIVE] = \
            ('GET', '/session/$sessionId/ime/activated')
        self.command_executor._commands[Command.ACTIVATE_IME_ENGINE] = \
            ('POST', '/session/$sessionId/ime/activate')
        self.command_executor._commands[Command.DEACTIVATE_IME_ENGINE] = \
            ('POST', '/session/$sessionId/ime/deactivate')
        self.command_executor._commands[Command.GET_ACTIVE_IME_ENGINE] = \
            ('GET', '/session/$sessionId/ime/active_engine')

Classes

class IME (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 IME(webdriver.Remote):

    @property
    def available_ime_engines(self) -> List[str]:
        """Get the available input methods for an Android device.

        Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME'])
        Android only.

        Returns:
            :obj:`list` of :obj:`str`: The available input methods for an Android device
        """
        return self.execute(Command.GET_AVAILABLE_IME_ENGINES, {})['value']

    def is_ime_active(self) -> bool:
        """Checks whether the device has IME service active.
        Android only.

        Returns:
            bool: `True` if IME service is active
        """
        return self.execute(Command.IS_IME_ACTIVE, {})['value']

    def activate_ime_engine(self, engine: str) -> T:
        """Activates the given IME engine on the device.

        Android only.

        Args:
           engine (str): the package and activity of the IME engine to activate
               (e.g., 'com.android.inputmethod.latin/.LatinIME')

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

    def deactivate_ime_engine(self) -> T:
        """Deactivates the currently active IME engine on the device.

        Android only.

        Returns:
            `appium.webdriver.webdriver.WebDriver`
        """
        self.execute(Command.DEACTIVATE_IME_ENGINE, {})
        return self

    @property
    def active_ime_engine(self) -> str:
        """Returns the activity and package of the currently active IME engine(e.g., 'com.android.inputmethod.latin/.LatinIME').

        Android only.

        Returns:
            str: The activity and package of the currently active IME engine
        """
        return self.execute(Command.GET_ACTIVE_IME_ENGINE, {})['value']

    # pylint: disable=protected-access

    def _addCommands(self) -> None:
        self.command_executor._commands[Command.GET_AVAILABLE_IME_ENGINES] = \
            ('GET', '/session/$sessionId/ime/available_engines')
        self.command_executor._commands[Command.IS_IME_ACTIVE] = \
            ('GET', '/session/$sessionId/ime/activated')
        self.command_executor._commands[Command.ACTIVATE_IME_ENGINE] = \
            ('POST', '/session/$sessionId/ime/activate')
        self.command_executor._commands[Command.DEACTIVATE_IME_ENGINE] = \
            ('POST', '/session/$sessionId/ime/deactivate')
        self.command_executor._commands[Command.GET_ACTIVE_IME_ENGINE] = \
            ('GET', '/session/$sessionId/ime/active_engine')

Ancestors

  • selenium.webdriver.remote.webdriver.WebDriver

Subclasses

Instance variables

var active_ime_engine

Returns the activity and package of the currently active IME engine(e.g., 'com.android.inputmethod.latin/.LatinIME').

Android only.

Returns

str
The activity and package of the currently active IME engine
Expand source code
@property
def active_ime_engine(self) -> str:
    """Returns the activity and package of the currently active IME engine(e.g., 'com.android.inputmethod.latin/.LatinIME').

    Android only.

    Returns:
        str: The activity and package of the currently active IME engine
    """
    return self.execute(Command.GET_ACTIVE_IME_ENGINE, {})['value']
var available_ime_engines

Get the available input methods for an Android device.

Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME']) Android only.

Returns

:obj:list of :obj:str: The available input methods for an Android device

Expand source code
@property
def available_ime_engines(self) -> List[str]:
    """Get the available input methods for an Android device.

    Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME'])
    Android only.

    Returns:
        :obj:`list` of :obj:`str`: The available input methods for an Android device
    """
    return self.execute(Command.GET_AVAILABLE_IME_ENGINES, {})['value']

Methods

def activate_ime_engine(self, engine)

Activates the given IME engine on the device.

Android only.

Args

engine : str
the package and activity of the IME engine to activate (e.g., 'com.android.inputmethod.latin/.LatinIME')

Returns

WebDriver

Expand source code
def activate_ime_engine(self, engine: str) -> T:
    """Activates the given IME engine on the device.

    Android only.

    Args:
       engine (str): the package and activity of the IME engine to activate
           (e.g., 'com.android.inputmethod.latin/.LatinIME')

    Returns:
        `appium.webdriver.webdriver.WebDriver`
    """
    data = {
        'engine': engine
    }
    self.execute(Command.ACTIVATE_IME_ENGINE, data)
    return self
def deactivate_ime_engine(self)

Deactivates the currently active IME engine on the device.

Android only.

Returns

WebDriver

Expand source code
def deactivate_ime_engine(self) -> T:
    """Deactivates the currently active IME engine on the device.

    Android only.

    Returns:
        `appium.webdriver.webdriver.WebDriver`
    """
    self.execute(Command.DEACTIVATE_IME_ENGINE, {})
    return self
def is_ime_active(self)

Checks whether the device has IME service active. Android only.

Returns

bool
True if IME service is active
Expand source code
def is_ime_active(self) -> bool:
    """Checks whether the device has IME service active.
    Android only.

    Returns:
        bool: `True` if IME service is active
    """
    return self.execute(Command.IS_IME_ACTIVE, {})['value']