diff --git a/.gitignore b/.gitignore index c5b30b794..e4760485b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *._* *.log *.log.* +_*/ *.pyc *.egg-info @@ -23,4 +24,4 @@ __pycache__ venv* .tox -Pipfile.lock \ No newline at end of file +Pipfile.lock diff --git a/appium/webdriver/common/multi_action.py b/appium/webdriver/common/multi_action.py index e6a84cfec..692decad0 100644 --- a/appium/webdriver/common/multi_action.py +++ b/appium/webdriver/common/multi_action.py @@ -45,8 +45,11 @@ def add(self, *touch_actions: 'TouchAction') -> None: Usage: a1 = TouchAction(driver) + a1.press(el1).move_to(el2).release() + a2 = TouchAction(driver) + a2.press(el2).move_to(el1).release() MultiAction(driver).add(a1, a2) @@ -62,8 +65,11 @@ def perform(self: T) -> T: Usage: a1 = TouchAction(driver) + a1.press(el1).move_to(el2).release() + a2 = TouchAction(driver) + a2.press(el2).move_to(el1).release() MultiAction(driver).add(a1, a2).perform() diff --git a/appium/webdriver/connectiontype.py b/appium/webdriver/connectiontype.py index 7d477680e..7db69ba36 100644 --- a/appium/webdriver/connectiontype.py +++ b/appium/webdriver/connectiontype.py @@ -16,13 +16,21 @@ """ Connection types are specified here: https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile#120 - Value (Alias) | Data | Wifi | Airplane Mode - ------------------------------------------------- - 0 (None) | 0 | 0 | 0 - 1 (Airplane Mode) | 0 | 0 | 1 - 2 (Wifi only) | 0 | 1 | 0 - 4 (Data only) | 1 | 0 | 0 - 6 (All network on) | 1 | 1 | 0 + + +--------------------+------+------+---------------+ + | Value (Alias) | Data | Wifi | Airplane Mode | + +====================+======+======+===============+ + | 0 (None) | 0 | 0 | 0 | + +--------------------+------+------+---------------+ + | 1 (Airplane Mode) | 0 | 0 | 1 | + +--------------------+------+------+---------------+ + | 2 (Wifi only) | 0 | 1 | 0 | + +--------------------+------+------+---------------+ + | 4 (Data only) | 1 | 0 | 0 | + +--------------------+------+------+---------------+ + | 6 (All network on) | 1 | 1 | 0 | + +--------------------+------+------+---------------+ + """ diff --git a/appium/webdriver/extensions/android/network.py b/appium/webdriver/extensions/android/network.py index 4f8746875..d95bc4400 100644 --- a/appium/webdriver/extensions/android/network.py +++ b/appium/webdriver/extensions/android/network.py @@ -50,13 +50,21 @@ def set_network_connection(self, connection_type: int) -> int: """Sets the network connection type. Android only. Possible values: - Value (Alias) | Data | Wifi | Airplane Mode - ------------------------------------------------- - 0 (None) | 0 | 0 | 0 - 1 (Airplane Mode) | 0 | 0 | 1 - 2 (Wifi only) | 0 | 1 | 0 - 4 (Data only) | 1 | 0 | 0 - 6 (All network on) | 1 | 1 | 0 + + +--------------------+------+------+---------------+ + | Value (Alias) | Data | Wifi | Airplane Mode | + +====================+======+======+===============+ + | 0 (None) | 0 | 0 | 0 | + +--------------------+------+------+---------------+ + | 1 (Airplane Mode) | 0 | 0 | 1 | + +--------------------+------+------+---------------+ + | 2 (Wifi only) | 0 | 1 | 0 | + +--------------------+------+------+---------------+ + | 4 (Data only) | 1 | 0 | 0 | + +--------------------+------+------+---------------+ + | 6 (All network on) | 1 | 1 | 0 | + +--------------------+------+------+---------------+ + These are available through the enumeration `appium.webdriver.ConnectionType` Args: diff --git a/appium/webdriver/extensions/android/power.py b/appium/webdriver/extensions/android/power.py index 827324e8f..381e597b0 100644 --- a/appium/webdriver/extensions/android/power.py +++ b/appium/webdriver/extensions/android/power.py @@ -52,6 +52,7 @@ def set_power_ac(self, ac_state: str) -> T: Usage: self.driver.set_power_ac(Power.AC_OFF) + self.driver.set_power_ac(Power.AC_ON) Returns: diff --git a/appium/webdriver/extensions/device_time.py b/appium/webdriver/extensions/device_time.py index d16f56b3f..db57f19c2 100644 --- a/appium/webdriver/extensions/device_time.py +++ b/appium/webdriver/extensions/device_time.py @@ -41,6 +41,7 @@ def get_device_time(self, format: Optional[str] = None) -> str: Usage: self.driver.get_device_time() + self.driver.get_device_time("YYYY-MM-DD") Return: diff --git a/appium/webdriver/extensions/execute_driver.py b/appium/webdriver/extensions/execute_driver.py index 3b3778c39..4e96b8feb 100644 --- a/appium/webdriver/extensions/execute_driver.py +++ b/appium/webdriver/extensions/execute_driver.py @@ -34,7 +34,9 @@ def execute_driver(self, script: str, script_type: str = 'webdriverio', timeout_ Usage: self.driver.execute_driver(script='return [];') + self.driver.execute_driver(script='return [];', script_type='webdriverio') + self.driver.execute_driver(script='return [];', script_type='webdriverio', timeout_ms=10000) Returns: diff --git a/appium/webdriver/extensions/log_event.py b/appium/webdriver/extensions/log_event.py index b22c2416b..d7de2eca2 100644 --- a/appium/webdriver/extensions/log_event.py +++ b/appium/webdriver/extensions/log_event.py @@ -32,6 +32,7 @@ def get_events(self, type: List[str] = None) -> Dict[str, Union[str, int]]: Usage: events = driver.get_events() + events = driver.get_events(['appium:funEvent']) Returns: diff --git a/appium/webdriver/py.typed b/appium/webdriver/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/appium/webdriver/webelement.py b/appium/webdriver/webelement.py index ce9e8f808..2eb191aa9 100644 --- a/appium/webdriver/webelement.py +++ b/appium/webdriver/webelement.py @@ -180,7 +180,9 @@ def location_in_view(self) -> Dict[str, int]: Usage: location = element.location_in_view + x = location['x'] + y = location['y'] Returns: diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..d4bb2cbb9 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..119c85153 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,21 @@ +### How to generate doc + +```bash +$cd python-client/docs +$bash generate.sh +``` + +### How to check generated doc + +```bash +$cd python-client/docs +$bash generate.sh +$cd python-client/docs/_build/html +$python -m http.server 1234 +``` + +Access to `http://localhost:1234` on web browser + + +### How to deploy generated doc +See https://github.com/ki4070ma/python-client-sphinx#how-to-deploy for now diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 000000000..7d93d15da --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,59 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys + +sys.path.insert(0, os.path.abspath('../appium')) + + +# -- Project information ----------------------------------------------------- + +project = 'Python client 1.0 beta' +copyright = '2020, Appium' +author = 'Appium' + +# The full version, including alpha/beta/rc tags +release = '1.0beta' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.napoleon', + 'sphinx.ext.githubpages' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] diff --git a/docs/generate.sh b/docs/generate.sh new file mode 100644 index 000000000..219b7325d --- /dev/null +++ b/docs/generate.sh @@ -0,0 +1,4 @@ +#!/bin/sh +rm -rf *rst _build +sphinx-apidoc -F -H 'Appium python client' -o . ../appium/webdriver +make html diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 000000000..b5db08cc5 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,21 @@ +.. Appium python client documentation master file, created by + sphinx-quickstart on Sun Mar 1 17:05:15 2020. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Appium python client's documentation! +================================================ + +.. toctree:: + :maxdepth: 4 + :caption: Contents: + + webdriver + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 000000000..6247f7e23 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/webdriver.common.rst b/docs/webdriver.common.rst new file mode 100644 index 000000000..1da461fbb --- /dev/null +++ b/docs/webdriver.common.rst @@ -0,0 +1,38 @@ +webdriver.common package +======================== + +Submodules +---------- + +webdriver.common.mobileby module +-------------------------------- + +.. automodule:: webdriver.common.mobileby + :members: + :undoc-members: + :show-inheritance: + +webdriver.common.multi\_action module +------------------------------------- + +.. automodule:: webdriver.common.multi_action + :members: + :undoc-members: + :show-inheritance: + +webdriver.common.touch\_action module +------------------------------------- + +.. automodule:: webdriver.common.touch_action + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: webdriver.common + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/webdriver.extensions.android.rst b/docs/webdriver.extensions.android.rst new file mode 100644 index 000000000..55a32a1f4 --- /dev/null +++ b/docs/webdriver.extensions.android.rst @@ -0,0 +1,94 @@ +webdriver.extensions.android package +==================================== + +Submodules +---------- + +webdriver.extensions.android.activities module +---------------------------------------------- + +.. automodule:: webdriver.extensions.android.activities + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.common module +------------------------------------------ + +.. automodule:: webdriver.extensions.android.common + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.display module +------------------------------------------- + +.. automodule:: webdriver.extensions.android.display + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.gsm module +--------------------------------------- + +.. automodule:: webdriver.extensions.android.gsm + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.nativekey module +--------------------------------------------- + +.. automodule:: webdriver.extensions.android.nativekey + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.network module +------------------------------------------- + +.. automodule:: webdriver.extensions.android.network + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.performance module +----------------------------------------------- + +.. automodule:: webdriver.extensions.android.performance + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.power module +----------------------------------------- + +.. automodule:: webdriver.extensions.android.power + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.sms module +--------------------------------------- + +.. automodule:: webdriver.extensions.android.sms + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.android.system\_bars module +------------------------------------------------ + +.. automodule:: webdriver.extensions.android.system_bars + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: webdriver.extensions.android + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/webdriver.extensions.rst b/docs/webdriver.extensions.rst new file mode 100644 index 000000000..53002b3a9 --- /dev/null +++ b/docs/webdriver.extensions.rst @@ -0,0 +1,158 @@ +webdriver.extensions package +============================ + +Subpackages +----------- + +.. toctree:: + + webdriver.extensions.android + webdriver.extensions.search_context + +Submodules +---------- + +webdriver.extensions.action\_helpers module +------------------------------------------- + +.. automodule:: webdriver.extensions.action_helpers + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.applications module +---------------------------------------- + +.. automodule:: webdriver.extensions.applications + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.clipboard module +------------------------------------- + +.. automodule:: webdriver.extensions.clipboard + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.context module +----------------------------------- + +.. automodule:: webdriver.extensions.context + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.device\_time module +---------------------------------------- + +.. automodule:: webdriver.extensions.device_time + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.execute\_driver module +------------------------------------------- + +.. automodule:: webdriver.extensions.execute_driver + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.execute\_mobile\_command module +---------------------------------------------------- + +.. automodule:: webdriver.extensions.execute_mobile_command + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.hw\_actions module +--------------------------------------- + +.. automodule:: webdriver.extensions.hw_actions + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.images\_comparison module +---------------------------------------------- + +.. automodule:: webdriver.extensions.images_comparison + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.ime module +------------------------------- + +.. automodule:: webdriver.extensions.ime + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.keyboard module +------------------------------------ + +.. automodule:: webdriver.extensions.keyboard + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.location module +------------------------------------ + +.. automodule:: webdriver.extensions.location + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.log\_event module +-------------------------------------- + +.. automodule:: webdriver.extensions.log_event + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.remote\_fs module +-------------------------------------- + +.. automodule:: webdriver.extensions.remote_fs + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.screen\_record module +------------------------------------------ + +.. automodule:: webdriver.extensions.screen_record + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.session module +----------------------------------- + +.. automodule:: webdriver.extensions.session + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.settings module +------------------------------------ + +.. automodule:: webdriver.extensions.settings + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: webdriver.extensions + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/webdriver.extensions.search_context.rst b/docs/webdriver.extensions.search_context.rst new file mode 100644 index 000000000..cff8b87eb --- /dev/null +++ b/docs/webdriver.extensions.search_context.rst @@ -0,0 +1,62 @@ +webdriver.extensions.search\_context package +============================================ + +Submodules +---------- + +webdriver.extensions.search\_context.android module +--------------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.android + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.search\_context.base\_search\_context module +----------------------------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.base_search_context + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.search\_context.custom module +-------------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.custom + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.search\_context.ios module +----------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.ios + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.search\_context.mobile module +-------------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.mobile + :members: + :undoc-members: + :show-inheritance: + +webdriver.extensions.search\_context.windows module +--------------------------------------------------- + +.. automodule:: webdriver.extensions.search_context.windows + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: webdriver.extensions.search_context + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/webdriver.rst b/docs/webdriver.rst new file mode 100644 index 000000000..2b20f6b26 --- /dev/null +++ b/docs/webdriver.rst @@ -0,0 +1,102 @@ +webdriver package +================= + +Subpackages +----------- + +.. toctree:: + + webdriver.common + webdriver.extensions + +Submodules +---------- + +webdriver.appium\_connection module +----------------------------------- + +.. automodule:: webdriver.appium_connection + :members: + :undoc-members: + :show-inheritance: + +webdriver.appium\_service module +-------------------------------- + +.. automodule:: webdriver.appium_service + :members: + :undoc-members: + :show-inheritance: + +webdriver.applicationstate module +--------------------------------- + +.. automodule:: webdriver.applicationstate + :members: + :undoc-members: + :show-inheritance: + +webdriver.clipboard\_content\_type module +----------------------------------------- + +.. automodule:: webdriver.clipboard_content_type + :members: + :undoc-members: + :show-inheritance: + +webdriver.connectiontype module +------------------------------- + +.. automodule:: webdriver.connectiontype + :members: + :undoc-members: + :show-inheritance: + +webdriver.errorhandler module +----------------------------- + +.. automodule:: webdriver.errorhandler + :members: + :undoc-members: + :show-inheritance: + +webdriver.mobilecommand module +------------------------------ + +.. automodule:: webdriver.mobilecommand + :members: + :undoc-members: + :show-inheritance: + +webdriver.switch\_to module +--------------------------- + +.. automodule:: webdriver.switch_to + :members: + :undoc-members: + :show-inheritance: + +webdriver.webdriver module +-------------------------- + +.. automodule:: webdriver.webdriver + :members: + :undoc-members: + :show-inheritance: + +webdriver.webelement module +--------------------------- + +.. automodule:: webdriver.webelement + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: webdriver + :members: + :undoc-members: + :show-inheritance: