From 80bb38ebc1a0df02c3f7f3f5141f6488cfc7c833 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 16:58:04 -0700 Subject: [PATCH 01/22] Bump 0.47 --- appium/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/version.py b/appium/version.py index 2ac27b82..9e2aa246 100644 --- a/appium/version.py +++ b/appium/version.py @@ -1 +1 @@ -version = '0.46' +version = '0.47' From c0bf55bb1e15aebfbe43273b7718a2a7ebbfc426 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 17:44:11 -0700 Subject: [PATCH 02/22] add GET_SESSION --- appium/webdriver/mobilecommand.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appium/webdriver/mobilecommand.py b/appium/webdriver/mobilecommand.py index 3128a089..c8ce55bc 100644 --- a/appium/webdriver/mobilecommand.py +++ b/appium/webdriver/mobilecommand.py @@ -15,6 +15,8 @@ class MobileCommand(object): # Common + GET_SESSION = 'getSession' + GET_LOCATION = 'getLocation' SET_LOCATION = 'setLocation' From 45bad8a1fea06d74272a2a7520451533a85720be Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 17:45:24 -0700 Subject: [PATCH 03/22] add events property, this property will get the current information of the session and get the events timings --- appium/webdriver/webdriver.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 0c261e8f..8fed3c55 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -691,6 +691,24 @@ def battery_info(self): """ return self.execute_script('mobile: batteryInfo') + @property + def events(self): + """ Retrieves event timing information from the current session + Usage: + events = driver.events + + Returns: + `dict containing event timimgs information from the current session` + """ + self.command_executor._commands[Command.GET_SESSION] = \ + ('GET', '/session/$sessionId') + session = self.execute(Command.GET_SESSION) + try: + return session["value"]["events"] + except Exception as e: + logger.warning('Could not find events information in the session. Session: {}').format(str(session)) + return () + # pylint: disable=protected-access def _addCommands(self): From c5258b6a7169b3cdc548e90a528e837c669bf8d6 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 18:17:17 -0700 Subject: [PATCH 04/22] just updating the version for local development --- appium/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/version.py b/appium/version.py index 9e2aa246..52066d38 100644 --- a/appium/version.py +++ b/appium/version.py @@ -1 +1 @@ -version = '0.47' +version = '0.46-dev' From ce43a27cfffda140fb45d2a8e59f6c6b1f2d86fc Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 19:00:14 -0700 Subject: [PATCH 05/22] change return type on missing events --- appium/webdriver/webdriver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 8fed3c55..040e6fc0 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -706,8 +706,8 @@ def events(self): try: return session["value"]["events"] except Exception as e: - logger.warning('Could not find events information in the session. Session: {}').format(str(session)) - return () + logger.warning('Could not find events information in the session. Session: {}'.format(session)) + return {} # pylint: disable=protected-access From 3e417f75070d619e84158d5a6b3164d6055ee684 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 19:00:57 -0700 Subject: [PATCH 06/22] add unit test for events property --- test/unit/webdriver/webdriver_test.py | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index fbe83108..fafe0cc3 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -21,6 +21,7 @@ from appium.webdriver.webdriver import WebDriver from test.unit.helper.test_helper import ( android_w3c_driver, + ios_w3c_driver, appium_command, get_httpretty_request_body ) @@ -255,6 +256,35 @@ def test_create_session_register_uridirect_no_direct_connect_path(self): assert 'http://localhost:4723/wd/hub' == driver.command_executor._url assert ['NATIVE_APP', 'CHROMIUM'] == driver.contexts + @httpretty.activate + def test_get_events(self): + driver = ios_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890'), + body=json.dumps({'value':{'events':{"simStarted":[1234567890]}}}) + ) + events = driver.events + assert events["simStarted"] == [1234567890] + + @httpretty.activate + def test_get_events_catches_missing_events(self): + driver = ios_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890'), + body=json.dumps({'value':{}}) + ) + events = driver.events + assert events == {} + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890'), + body=json.dumps({}) + ) + events = driver.events + assert events == {} + class SubWebDriver(WebDriver): def __init__(self, command_executor, desired_capabilities, direct_connection=False): From 0b9b53da52506a3502c4bc830ec663c94d61c750 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Sun, 18 Aug 2019 19:03:01 -0700 Subject: [PATCH 07/22] rollback version --- appium/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/version.py b/appium/version.py index 52066d38..2ac27b82 100644 --- a/appium/version.py +++ b/appium/version.py @@ -1 +1 @@ -version = '0.46-dev' +version = '0.46' From 1fbf265acee102db459d1dfa650eb50155593657 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Mon, 19 Aug 2019 09:33:25 -0700 Subject: [PATCH 08/22] add method for getting session_capabilities --- appium/webdriver/webdriver.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 040e6fc0..5868a59c 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -691,22 +691,30 @@ def battery_info(self): """ return self.execute_script('mobile: batteryInfo') + @property + def session_capabilities(self): + """ Retrieves session information from the current session + Usage: + session_capabilities = driver.session_capabilities + Returns: + `dict containing information from the current session` + """ + return self.execute(Command.GET_SESSION)["value"] + @property def events(self): - """ Retrieves event timing information from the current session + """ Retrieves events information from the current session Usage: events = driver.events Returns: - `dict containing event timimgs information from the current session` + `dict containing events information from the current session` """ - self.command_executor._commands[Command.GET_SESSION] = \ - ('GET', '/session/$sessionId') - session = self.execute(Command.GET_SESSION) try: - return session["value"]["events"] + session_capabilities = self.session_capabilities + return session_capabilities["events"] except Exception as e: - logger.warning('Could not find events information in the session. Session: {}'.format(session)) + logger.warning('Could not find events information in the session. Session: {}'.format(session_capabilities)) return {} # pylint: disable=protected-access @@ -719,6 +727,8 @@ def _addCommands(self): if hasattr(mixin_class, self._addCommands.__name__): getattr(mixin_class, self._addCommands.__name__, None)(self) + self.command_executor._commands[Command.GET_SESSION] = \ + ('GET', '/session/$sessionId') self.command_executor._commands[Command.TOUCH_ACTION] = \ ('POST', '/session/$sessionId/touch/perform') self.command_executor._commands[Command.MULTI_ACTION] = \ From 25ef025e405f762ab88a0480fc522f277f98887a Mon Sep 17 00:00:00 2001 From: vrunoa Date: Mon, 19 Aug 2019 09:33:35 -0700 Subject: [PATCH 09/22] update unit tests --- test/unit/webdriver/webdriver_test.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index fafe0cc3..207af04a 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -256,6 +256,18 @@ def test_create_session_register_uridirect_no_direct_connect_path(self): assert 'http://localhost:4723/wd/hub' == driver.command_executor._url assert ['NATIVE_APP', 'CHROMIUM'] == driver.contexts + @httpretty.activate + def test_get_session_capabilities(self): + driver = ios_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890'), + body=json.dumps({'value':{'deviceName':'iPhone Simulator', 'events':{"simStarted":[1234567890]}}}) + ) + session = driver.session_capabilities + assert session["deviceName"] == 'iPhone Simulator' + assert session["events"]["simStarted"] == [1234567890] + @httpretty.activate def test_get_events(self): driver = ios_w3c_driver() From 23bc706fb73809e468041b17036a84eb37238df3 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Mon, 19 Aug 2019 09:36:36 -0700 Subject: [PATCH 10/22] fix typo --- appium/webdriver/webdriver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 5868a59c..0692f3f6 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -708,12 +708,12 @@ def events(self): events = driver.events Returns: - `dict containing events information from the current session` + `dict containing events timing information from the current session` """ try: session_capabilities = self.session_capabilities return session_capabilities["events"] - except Exception as e: + except Exception: logger.warning('Could not find events information in the session. Session: {}'.format(session_capabilities)) return {} From 0b3145ccb5d652438b14ec796f83bfe1d7221b66 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Mon, 19 Aug 2019 20:51:38 -0700 Subject: [PATCH 11/22] use single quotes --- appium/webdriver/webdriver.py | 4 ++-- test/unit/webdriver/webdriver_test.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 0692f3f6..e565ae13 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -699,7 +699,7 @@ def session_capabilities(self): Returns: `dict containing information from the current session` """ - return self.execute(Command.GET_SESSION)["value"] + return self.execute(Command.GET_SESSION)['value'] @property def events(self): @@ -712,7 +712,7 @@ def events(self): """ try: session_capabilities = self.session_capabilities - return session_capabilities["events"] + return session_capabilities['events'] except Exception: logger.warning('Could not find events information in the session. Session: {}'.format(session_capabilities)) return {} diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index 207af04a..a2350303 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -262,11 +262,11 @@ def test_get_session_capabilities(self): httpretty.register_uri( httpretty.GET, appium_command('/session/1234567890'), - body=json.dumps({'value':{'deviceName':'iPhone Simulator', 'events':{"simStarted":[1234567890]}}}) + body=json.dumps({'value': {'deviceName': 'iPhone Simulator', 'events': {'simStarted': [1234567890]}}}) ) session = driver.session_capabilities - assert session["deviceName"] == 'iPhone Simulator' - assert session["events"]["simStarted"] == [1234567890] + assert session['deviceName'] == 'iPhone Simulator' + assert session['events']['simStarted'] == [1234567890] @httpretty.activate def test_get_events(self): @@ -274,10 +274,10 @@ def test_get_events(self): httpretty.register_uri( httpretty.GET, appium_command('/session/1234567890'), - body=json.dumps({'value':{'events':{"simStarted":[1234567890]}}}) + body=json.dumps({'value': {'events': {'simStarted': [1234567890]}}}) ) events = driver.events - assert events["simStarted"] == [1234567890] + assert events['simStarted'] == [1234567890] @httpretty.activate def test_get_events_catches_missing_events(self): @@ -285,7 +285,7 @@ def test_get_events_catches_missing_events(self): httpretty.register_uri( httpretty.GET, appium_command('/session/1234567890'), - body=json.dumps({'value':{}}) + body=json.dumps({'value': {}}) ) events = driver.events assert events == {} From 91728405763942f95ebba196c9b4da39cfedb193 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 08:59:19 -0700 Subject: [PATCH 12/22] change method property to session, log error --- appium/webdriver/webdriver.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index e565ae13..766fe6ab 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -692,7 +692,7 @@ def battery_info(self): return self.execute_script('mobile: batteryInfo') @property - def session_capabilities(self): + def session(self): """ Retrieves session information from the current session Usage: session_capabilities = driver.session_capabilities @@ -711,10 +711,10 @@ def events(self): `dict containing events timing information from the current session` """ try: - session_capabilities = self.session_capabilities - return session_capabilities['events'] - except Exception: - logger.warning('Could not find events information in the session. Session: {}'.format(session_capabilities)) + session = self.session + return session['events'] + except Exception as e: + logger.warning('Could not find events information in the session. Error {}'.format(e)) return {} # pylint: disable=protected-access From e51b2562aa7f98af33468f4805d292623d680602 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 10:32:09 -0700 Subject: [PATCH 13/22] update docstring --- appium/webdriver/webdriver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 766fe6ab..daa0f790 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -695,7 +695,7 @@ def battery_info(self): def session(self): """ Retrieves session information from the current session Usage: - session_capabilities = driver.session_capabilities + session = driver.session Returns: `dict containing information from the current session` """ From e44d050b16c019935f0275b3c87b660c5dc9043a Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 10:32:20 -0700 Subject: [PATCH 14/22] update unit tests --- test/unit/webdriver/webdriver_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index a2350303..6eda0dc9 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -264,7 +264,7 @@ def test_get_session_capabilities(self): appium_command('/session/1234567890'), body=json.dumps({'value': {'deviceName': 'iPhone Simulator', 'events': {'simStarted': [1234567890]}}}) ) - session = driver.session_capabilities + session = driver.session assert session['deviceName'] == 'iPhone Simulator' assert session['events']['simStarted'] == [1234567890] From 92c0f80cbb7e36e4c265ca0d047b746702595206 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 12:55:46 -0700 Subject: [PATCH 15/22] update output of error --- appium/webdriver/webdriver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index daa0f790..23c5e8d6 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -714,7 +714,7 @@ def events(self): session = self.session return session['events'] except Exception as e: - logger.warning('Could not find events information in the session. Error {}'.format(e)) + logger.warning('Could not find events information in the session. Error:', e) return {} # pylint: disable=protected-access From 631167c00087096816ab5101474b0daae2113b76 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 12:56:09 -0700 Subject: [PATCH 16/22] add unit test to catch exception --- test/unit/webdriver/webdriver_test.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index 6eda0dc9..41f20e20 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -25,7 +25,7 @@ appium_command, get_httpretty_request_body ) - +from mock import patch class TestWebDriverWebDriver(object): @@ -219,6 +219,7 @@ def test_create_session_register_uridirect(self): assert 'http://localhost2:4800/special/path/wd/hub' == driver.command_executor._url assert ['NATIVE_APP', 'CHROMIUM'] == driver.contexts + @httpretty.activate def test_create_session_register_uridirect_no_direct_connect_path(self): httpretty.register_uri( @@ -257,7 +258,7 @@ def test_create_session_register_uridirect_no_direct_connect_path(self): assert ['NATIVE_APP', 'CHROMIUM'] == driver.contexts @httpretty.activate - def test_get_session_capabilities(self): + def test_get_session(self): driver = ios_w3c_driver() httpretty.register_uri( httpretty.GET, @@ -297,6 +298,23 @@ def test_get_events_catches_missing_events(self): events = driver.events assert events == {} + @httpretty.activate + @patch("appium.webdriver.webdriver.logger.warning") + def test_session_catches_error(self, mock_warning): + def exceptionCallback(request, uri, headers): + raise Exception() + + driver = ios_w3c_driver() + httpretty.register_uri( + httpretty.GET, + appium_command('/session/1234567890'), + body=exceptionCallback + ) + events = driver.events + mock_warning.assert_called_once() + assert events == {} + + class SubWebDriver(WebDriver): def __init__(self, command_executor, desired_capabilities, direct_connection=False): From bec75c5daf3b4d88e8d025afa26b914182c409d7 Mon Sep 17 00:00:00 2001 From: vrunoa Date: Wed, 21 Aug 2019 17:50:35 -0700 Subject: [PATCH 17/22] fix lint --- test/unit/webdriver/webdriver_test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index 41f20e20..c2852b5f 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -27,6 +27,7 @@ ) from mock import patch + class TestWebDriverWebDriver(object): @httpretty.activate @@ -219,7 +220,6 @@ def test_create_session_register_uridirect(self): assert 'http://localhost2:4800/special/path/wd/hub' == driver.command_executor._url assert ['NATIVE_APP', 'CHROMIUM'] == driver.contexts - @httpretty.activate def test_create_session_register_uridirect_no_direct_connect_path(self): httpretty.register_uri( @@ -315,7 +315,6 @@ def exceptionCallback(request, uri, headers): assert events == {} - class SubWebDriver(WebDriver): def __init__(self, command_executor, desired_capabilities, direct_connection=False): super(SubWebDriver, self).__init__( From ef40abb28a16eead53fa436e73bcb54c44478746 Mon Sep 17 00:00:00 2001 From: Daniel-Graham-SL1298 Date: Wed, 21 Aug 2019 20:42:56 -0700 Subject: [PATCH 18/22] Run isort --- test/unit/webdriver/webdriver_test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index c2852b5f..5bfb384d 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -15,17 +15,17 @@ import json import httpretty +from mock import patch from appium import version as appium_version from appium import webdriver from appium.webdriver.webdriver import WebDriver from test.unit.helper.test_helper import ( android_w3c_driver, - ios_w3c_driver, appium_command, - get_httpretty_request_body + get_httpretty_request_body, + ios_w3c_driver ) -from mock import patch class TestWebDriverWebDriver(object): From 46a99764591a260d02f260f22a7c9f3ec40def55 Mon Sep 17 00:00:00 2001 From: Daniel-Graham-SL1298 Date: Wed, 21 Aug 2019 21:37:03 -0700 Subject: [PATCH 19/22] Sorting --- test/unit/webdriver/webdriver_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index 5bfb384d..75dcd18f 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -15,11 +15,11 @@ import json import httpretty -from mock import patch from appium import version as appium_version from appium import webdriver from appium.webdriver.webdriver import WebDriver +from mock import patch from test.unit.helper.test_helper import ( android_w3c_driver, appium_command, From 2041e27d0959357d7eb7b44dea9164547aad5012 Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 22 Aug 2019 16:06:11 +0900 Subject: [PATCH 20/22] add mock --- Pipfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Pipfile b/Pipfile index a1f21277..b4e3a724 100644 --- a/Pipfile +++ b/Pipfile @@ -5,6 +5,7 @@ verify_ssl = true [dev-packages] pre-commit = "~=1.13" +mock = "~=3.0" [packages] selenium = "~=3.141" From f2a6abdbe09aad8daa6b31423ca19d48421a3f06 Mon Sep 17 00:00:00 2001 From: Mori Atsushi Date: Thu, 22 Aug 2019 18:13:57 +0900 Subject: [PATCH 21/22] Move mock from dev-packages to packages in Pipfile --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index b4e3a724..793690c1 100644 --- a/Pipfile +++ b/Pipfile @@ -5,7 +5,6 @@ verify_ssl = true [dev-packages] pre-commit = "~=1.13" -mock = "~=3.0" [packages] selenium = "~=3.141" @@ -20,6 +19,7 @@ tox-travis = "~=0.11" httpretty = "~=0.9" python-dateutil = "~=2.8" +mock = "~=3.0" # TODO Update to the latest ver when py2 support dropped pylint = "~=1.9" From 9e46aa117439341d0b25ced4fd7f9a9bcb7e4a10 Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 22 Aug 2019 19:12:28 +0900 Subject: [PATCH 22/22] apply isort --- test/unit/webdriver/webdriver_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/webdriver/webdriver_test.py b/test/unit/webdriver/webdriver_test.py index 75dcd18f..5bfb384d 100644 --- a/test/unit/webdriver/webdriver_test.py +++ b/test/unit/webdriver/webdriver_test.py @@ -15,11 +15,11 @@ import json import httpretty +from mock import patch from appium import version as appium_version from appium import webdriver from appium.webdriver.webdriver import WebDriver -from mock import patch from test.unit.helper.test_helper import ( android_w3c_driver, appium_command,