How to use save_webdriver_logs_by_type method in toolium

Best Python code snippet using toolium_python

test_driver_utils.py

Source:test_driver_utils.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2"""3Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.4This file is part of Toolium.5Licensed under the Apache License, Version 2.0 (the "License");6you may not use this file except in compliance with the License.7You may obtain a copy of the License at8 http://www.apache.org/licenses/LICENSE-2.09Unless required by applicable law or agreed to in writing, software10distributed under the License is distributed on an "AS IS" BASIS,11WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12See the License for the specific language governing permissions and13limitations under the License.14"""15import os16import time17import mock18import pytest19import requests_mock20from requests.exceptions import ConnectionError21from selenium.common.exceptions import NoSuchElementException, TimeoutException22from selenium.webdriver.common.by import By23from selenium.webdriver.remote.webelement import WebElement24from toolium.config_files import ConfigFiles25from toolium.driver_wrapper import DriverWrapper26from toolium.driver_wrappers_pool import DriverWrappersPool27from toolium.pageelements.page_element import PageElement28from toolium.utils.driver_utils import Utils29navigation_bar_tests = (30 ('android', 'C:/Demo.apk', None, 0),31 ('android', None, 'chrome', 0),32 ('ios', '/tmp/Demo.zip', None, 0),33 ('ios', None, 'safari', 64),34 ('firefox', None, None, 0),35)36driver_name_tests = (37 ('firefox', 'firefox'),38 ('chrome', 'chrome'),39 ('iexplore-11', 'iexplore'),40 ('iexplore-11-on-WIN10', 'iexplore'),41)42def get_mock_element(x, y, height, width):43 """Create a mock element with custom location and size44 :param x: x location45 :param y: y location46 :param height: element height47 :param width: element width48 :returns: mock element49 """50 mock_element = mock.MagicMock(spec=WebElement)51 mock_element.location = {'x': x, 'y': y}52 mock_element.size = {'height': height, 'width': width}53 return mock_element54@pytest.fixture55def driver_wrapper():56 # Reset wrappers pool values57 DriverWrappersPool._empty_pool()58 DriverWrapper.config_properties_filenames = None59 # Create a new wrapper60 driver_wrapper = DriverWrappersPool.get_default_wrapper()61 driver_wrapper.driver = mock.MagicMock()62 # Configure properties63 root_path = os.path.dirname(os.path.realpath(__file__))64 config_files = ConfigFiles()65 config_files.set_config_directory(os.path.join(root_path, 'conf'))66 config_files.set_config_properties_filenames('properties.cfg')67 config_files.set_output_directory(os.path.join(root_path, 'output'))68 driver_wrapper.configure(config_files)69 yield driver_wrapper70 # Reset wrappers pool values71 DriverWrappersPool._empty_pool()72 DriverWrapper.config_properties_filenames = None73@pytest.fixture74def utils():75 # Create a new Utils instance76 return Utils()77@pytest.mark.parametrize("driver_type, driver_name", driver_name_tests)78def test_get_driver_name(driver_type, driver_name, driver_wrapper, utils):79 driver_wrapper.config.set('Driver', 'type', driver_type)80 assert utils.get_driver_name() == driver_name81def test_get_available_log_types_one_log_type(driver_wrapper, utils):82 # Configure mock83 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])84 type(driver_wrapper.driver).log_types = log_types_mock85 driver_wrapper.config.set('Server', 'log_types', 'client')86 log_types = utils.get_available_log_types()87 log_types_mock.assert_not_called()88 assert log_types == ['client']89def test_get_available_log_types_multiple_log_types(driver_wrapper, utils):90 # Configure mock91 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])92 type(driver_wrapper.driver).log_types = log_types_mock93 driver_wrapper.config.set('Server', 'log_types', 'client,server,browser')94 log_types = utils.get_available_log_types()95 log_types_mock.assert_not_called()96 assert log_types == ['client', 'server', 'browser']97def test_get_available_log_types_multiple_log_types_with_spaces(driver_wrapper, utils):98 # Configure mock99 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])100 type(driver_wrapper.driver).log_types = log_types_mock101 driver_wrapper.config.set('Server', 'log_types', 'client, server , browser')102 log_types = utils.get_available_log_types()103 log_types_mock.assert_not_called()104 assert log_types == ['client', 'server', 'browser']105def test_get_available_log_types_none_log_type(driver_wrapper, utils):106 # Configure mock107 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])108 type(driver_wrapper.driver).log_types = log_types_mock109 driver_wrapper.config.set('Server', 'log_types', '')110 log_types = utils.get_available_log_types()111 log_types_mock.assert_not_called()112 assert log_types == []113def test_get_available_log_types_all_log_type(driver_wrapper, utils):114 # Configure mock115 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])116 type(driver_wrapper.driver).log_types = log_types_mock117 driver_wrapper.config.set('Server', 'log_types', 'all')118 log_types = utils.get_available_log_types()119 log_types_mock.assert_called_once_with()120 assert log_types == ['client', 'server']121def test_get_available_log_types_without_log_types(driver_wrapper, utils):122 # Configure mock123 log_types_mock = mock.PropertyMock(return_value=['client', 'server'])124 type(driver_wrapper.driver).log_types = log_types_mock125 log_types = utils.get_available_log_types()126 log_types_mock.assert_called_once_with()127 assert log_types == ['client', 'server']128def test_save_webdriver_logs_all_log_type(utils):129 # Configure mock130 Utils.save_webdriver_logs_by_type = mock.MagicMock()131 Utils.get_available_log_types = mock.MagicMock(return_value=['client', 'server'])132 utils.save_webdriver_logs('test_name')133 Utils.save_webdriver_logs_by_type.assert_has_calls([mock.call('client', 'test_name'),134 mock.call('server', 'test_name')])135def test_save_webdriver_logs_without_log_types(utils):136 # Configure mock137 Utils.save_webdriver_logs_by_type = mock.MagicMock()138 Utils.get_available_log_types = mock.MagicMock(return_value=[])139 utils.save_webdriver_logs('test_name')140 Utils.save_webdriver_logs_by_type.assert_not_called()141def test_get_remote_node(driver_wrapper, utils):142 # Configure mock143 driver_wrapper.driver.session_id = '5af'144 url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')145 grid_response_json = {'session': 'e2', 'proxyId': 'http://10.20.30.40:5555', 'msg': 'slot found !',146 'inactivityTime': 78, 'success': True, 'internalKey': '7a'}147 with requests_mock.mock() as req_mock:148 req_mock.get(url, json=grid_response_json)149 # Get remote node and check result150 assert utils.get_remote_node() == ('grid', '10.20.30.40')151 assert url == req_mock.request_history[0].url152def test_get_remote_node_selenium3(driver_wrapper, utils):153 # Configure mock154 driver_wrapper.driver.session_id = '5af'155 url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')156 grid_response_json = {'session': 'e2', 'proxyId': '10.20.30.40', 'msg': 'slot found !',157 'inactivityTime': 78, 'success': True, 'internalKey': '7a'}158 with requests_mock.mock() as req_mock:159 req_mock.get(url, json=grid_response_json)160 # Get remote node and check result161 assert utils.get_remote_node() == ('grid', '10.20.30.40')162 assert url == req_mock.request_history[0].url163def test_get_remote_node_ggr(driver_wrapper, utils):164 # Configure mock165 driver_wrapper.driver.session_id = '5af'166 grid_url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')167 ggr_url = 'http://{}:{}/host/{}'.format('localhost', 4444, '5af')168 ggr_response_json = {'Count': 3, 'Username': '', 'Scheme': '', 'VNC': '', 'Name': 'host_name', 'Password': '',169 'Port': 4500}170 with requests_mock.mock() as req_mock:171 req_mock.get(grid_url, text='non_json_response')172 req_mock.get(ggr_url, json=ggr_response_json)173 # Get remote node and check result174 assert utils.get_remote_node() == ('ggr', 'host_name')175 assert grid_url == req_mock.request_history[0].url176 assert ggr_url == req_mock.request_history[1].url177def test_get_remote_node_selenoid(driver_wrapper, utils):178 # Configure mock179 driver_wrapper.driver.session_id = '5af'180 grid_url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')181 ggr_url = 'http://{}:{}/host/{}'.format('localhost', 4444, '5af')182 selenoid_url = 'http://{}:{}/status'.format('localhost', 4444)183 selenoid_response_json = {'total': 5, 'used': 0, 'queued': 0, 'pending': 0, 'browsers': {'firefox': {'59.0': {}}}}184 with requests_mock.mock() as req_mock:185 req_mock.get(grid_url, text='non_json_response')186 req_mock.get(ggr_url, json={})187 req_mock.get(selenoid_url, json=selenoid_response_json)188 # Get remote node and check result189 assert utils.get_remote_node() == ('selenoid', 'localhost')190 assert grid_url == req_mock.request_history[0].url191 assert ggr_url == req_mock.request_history[1].url192 assert selenoid_url == req_mock.request_history[2].url193def test_get_remote_node_non_grid(driver_wrapper, utils):194 # Configure mock195 driver_wrapper.driver.session_id = '5af'196 grid_url = 'http://{}:{}/grid/api/testsession?session={}'.format('localhost', 4444, '5af')197 ggr_url = 'http://{}:{}/host/{}'.format('localhost', 4444, '5af')198 selenoid_url = 'http://{}:{}/status'.format('localhost', 4444)199 with requests_mock.mock() as req_mock:200 req_mock.get(grid_url, text='non_json_response')201 req_mock.get(ggr_url, json={})202 req_mock.get(selenoid_url, json={})203 # Get remote node and check result204 assert utils.get_remote_node() == ('selenium', 'localhost')205 assert grid_url == req_mock.request_history[0].url206 assert ggr_url == req_mock.request_history[1].url207 assert selenoid_url == req_mock.request_history[2].url208def test_get_remote_node_local_execution(driver_wrapper, utils):209 driver_wrapper.config.set('Server', 'enabled', 'false')210 assert utils.get_remote_node() == ('local', None)211def test_get_remote_video_url(utils):212 # Configure mock213 url = 'http://{}:{}/video'.format('10.20.30.40', 3000)214 video_url = 'http://{}:{}/download_video/f4.mp4'.format('10.20.30.40', 3000)215 video_response_json = {'exit_code': 1, 'out': [],216 'error': ['Cannot call this endpoint without required parameters: session and action'],217 'available_videos': {'5af': {'size': 489701,218 'session': '5af',219 'last_modified': 1460041262558,220 'download_url': video_url,221 'absolute_path': 'C:\\f4.mp4'}},222 'current_videos': []}223 with requests_mock.mock() as req_mock:224 req_mock.get(url, json=video_response_json)225 # Get remote video url and check result226 assert utils._get_remote_video_url('10.20.30.40', '5af') == video_url227 assert url == req_mock.request_history[0].url228def test_get_remote_video_url_no_videos(utils):229 # Configure mock230 url = 'http://{}:{}/video'.format('10.20.30.40', 3000)231 video_response_json = {'exit_code': 1, 'out': [],232 'error': ['Cannot call this endpoint without required parameters: session and action'],233 'available_videos': {},234 'current_videos': []}235 with requests_mock.mock() as req_mock:236 req_mock.get(url, json=video_response_json)237 # Get remote video url and check result238 assert utils._get_remote_video_url('10.20.30.40', '5af') is None239 assert url == req_mock.request_history[0].url240def test_is_remote_video_enabled_grid(utils):241 # Configure mock242 url = 'http://{}:{}/config'.format('10.20.30.40', 3000)243 config_response_json = {'out': [], 'error': [], 'exit_code': 0,244 'filename': ['selenium_grid_extras_config.json'],245 'config_runtime': {'theConfigMap': {246 'video_recording_options': {'width': '1024', 'videos_to_keep': '5',247 'frames': '30',248 'record_test_videos': 'true'}}}}249 with requests_mock.mock() as req_mock:250 req_mock.get(url, json=config_response_json)251 # Get remote video configuration and check result252 assert utils.is_remote_video_enabled('grid', '10.20.30.40') is True253 assert url == req_mock.request_history[0].url254def test_is_remote_video_enabled_grid_disabled(utils):255 # Configure mock256 url = 'http://{}:{}/config'.format('10.20.30.40', 3000)257 config_response_json = {'out': [], 'error': [], 'exit_code': 0,258 'filename': ['selenium_grid_extras_config.json'],259 'config_runtime': {'theConfigMap': {260 'video_recording_options': {'width': '1024', 'videos_to_keep': '5',261 'frames': '30',262 'record_test_videos': 'false'}}}}263 with requests_mock.mock() as req_mock:264 req_mock.get(url, json=config_response_json)265 # Get remote video configuration and check result266 assert utils.is_remote_video_enabled('grid', '10.20.30.40') is False267 assert url == req_mock.request_history[0].url268@mock.patch('toolium.utils.driver_utils.requests.get')269def test_is_remote_video_enabled_non_grid_extras(req_get_mock, utils):270 # Configure mock271 req_get_mock.side_effect = ConnectionError('exception error')272 # Get remote video configuration and check result273 assert utils.is_remote_video_enabled('grid', '10.20.30.40') is False274def test_is_remote_video_enabled_grid_empty_node(utils):275 # Get remote video configuration and check result276 assert utils.is_remote_video_enabled('grid', '') is False277def test_is_remote_video_enabled_ggr(utils):278 # Get remote video configuration and check result279 assert utils.is_remote_video_enabled('ggr', '') is True280def test_is_remote_video_enabled_selenoid(utils):281 # Get remote video configuration and check result282 assert utils.is_remote_video_enabled('selenoid', '') is True283def test_is_remote_video_enabled_unknown_server(utils):284 # Get remote video configuration and check result285 assert utils.is_remote_video_enabled('unknown', '') is False286@pytest.mark.parametrize("driver_type, appium_app, appium_browser_name, bar_height", navigation_bar_tests)287def test_get_safari_navigation_bar_height(driver_type, appium_app, appium_browser_name, bar_height, driver_wrapper,288 utils):289 driver_wrapper.config.set('Driver', 'type', driver_type)290 if appium_app:291 driver_wrapper.config.set('AppiumCapabilities', 'app', appium_app)292 if appium_browser_name:293 driver_wrapper.config.set('AppiumCapabilities', 'browserName', appium_browser_name)294 assert utils.get_safari_navigation_bar_height() == bar_height295def test_get_window_size_android_native(driver_wrapper, utils):296 # Configure driver mock297 window_size = {'width': 375, 'height': 667}298 driver_wrapper.driver.get_window_size.return_value = window_size299 driver_wrapper.config.set('Driver', 'type', 'android')300 driver_wrapper.config.set('AppiumCapabilities', 'app', 'C:/Demo.apk')301 assert utils.get_window_size() == window_size302 driver_wrapper.driver.get_window_size.assert_called_once_with()303def test_get_window_size_android_native_two_times(driver_wrapper, utils):304 # Configure driver mock305 window_size = {'width': 375, 'height': 667}306 driver_wrapper.driver.get_window_size.return_value = window_size307 driver_wrapper.config.set('Driver', 'type', 'android')308 driver_wrapper.config.set('AppiumCapabilities', 'app', 'C:/Demo.apk')309 assert utils.get_window_size() == window_size310 assert utils.get_window_size() == window_size311 # Check that window size is calculated only one time312 driver_wrapper.driver.get_window_size.assert_called_once_with()313def test_get_window_size_android_web(driver_wrapper, utils):314 # Configure driver mock315 window_size = {'width': 375, 'height': 667}316 driver_wrapper.driver.current_context = 'WEBVIEW'317 driver_wrapper.driver.execute_script.side_effect = [window_size['width'], window_size['height']]318 driver_wrapper.config.set('Driver', 'type', 'android')319 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'chrome')320 assert utils.get_window_size() == window_size321 driver_wrapper.driver.execute_script.assert_has_calls(322 [mock.call('return window.screen.width'), mock.call('return window.screen.height')])323def test_get_window_size_android_web_two_times(driver_wrapper, utils):324 # Configure driver mock325 window_size = {'width': 375, 'height': 667}326 driver_wrapper.driver.current_context = 'WEBVIEW'327 driver_wrapper.driver.execute_script.side_effect = [window_size['width'], window_size['height']]328 driver_wrapper.config.set('Driver', 'type', 'android')329 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'chrome')330 assert utils.get_window_size() == window_size331 assert utils.get_window_size() == window_size332 # Check that window size is calculated only one time333 driver_wrapper.driver.execute_script.assert_has_calls(334 [mock.call('return window.screen.width'), mock.call('return window.screen.height')])335def test_get_native_coords_android_web(driver_wrapper, utils):336 # Configure driver mock337 web_window_size = {'width': 500, 'height': 667}338 native_window_size = {'width': 250, 'height': 450}339 driver_wrapper.driver.current_context = 'WEBVIEW'340 driver_wrapper.driver.execute_script.side_effect = [web_window_size['width'], web_window_size['height']]341 driver_wrapper.driver.get_window_size.side_effect = [native_window_size]342 driver_wrapper.config.set('Driver', 'type', 'android')343 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'chrome')344 web_coords = {'x': 105, 'y': 185}345 native_coords = {'x': 52.5, 'y': 92.5}346 assert utils.get_native_coords(web_coords) == native_coords347def test_get_native_coords_ios_web(driver_wrapper, utils):348 # Configure driver mock349 web_window_size = {'width': 500, 'height': 667}350 native_window_size = {'width': 250, 'height': 450}351 driver_wrapper.driver.get_window_size.return_value = native_window_size352 utils.get_window_size = mock.MagicMock(return_value=web_window_size)353 driver_wrapper.config.set('Driver', 'type', 'ios')354 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'safari')355 web_coords = {'x': 105, 'y': 185}356 native_coords = {'x': 52.5, 'y': 156.5}357 assert utils.get_native_coords(web_coords) == native_coords358def test_swipe_android_native(driver_wrapper, utils):359 # Configure driver mock360 web_window_size = {'width': 500, 'height': 667}361 native_window_size = {'width': 250, 'height': 450}362 driver_wrapper.driver.get_window_size.side_effect = [web_window_size, native_window_size]363 driver_wrapper.driver.current_context = 'NATIVE_APP'364 driver_wrapper.config.set('Driver', 'type', 'android')365 driver_wrapper.config.set('AppiumCapabilities', 'app', 'C:/Demo.apk')366 # Create element mock367 element = get_mock_element(x=250, y=40, height=40, width=300)368 utils.swipe(element, 50, 100)369 driver_wrapper.driver.swipe.assert_called_once_with(400, 60, 450, 160, None)370def test_swipe_android_web(driver_wrapper, utils):371 # Configure driver mock372 web_window_size = {'width': 500, 'height': 667}373 native_window_size = {'width': 250, 'height': 450}374 driver_wrapper.driver.current_context = 'WEBVIEW'375 driver_wrapper.driver.execute_script.side_effect = [web_window_size['width'], web_window_size['height']]376 driver_wrapper.driver.get_window_size.side_effect = [native_window_size]377 driver_wrapper.config.set('Driver', 'type', 'android')378 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'chrome')379 # Create element mock380 element = get_mock_element(x=250, y=40, height=40, width=300)381 utils.swipe(element, 50, 100)382 driver_wrapper.driver.swipe.assert_called_once_with(200, 30, 250, 130, None)383def test_swipe_android_hybrid(driver_wrapper, utils):384 # Configure driver mock385 web_window_size = {'width': 500, 'height': 667}386 native_window_size = {'width': 250, 'height': 450}387 # driver_wrapper.utils388 driver_wrapper.driver.get_window_size.side_effect = [web_window_size, native_window_size]389 driver_wrapper.driver.current_context = 'WEBVIEW'390 driver_wrapper.config.set('Driver', 'type', 'android')391 driver_wrapper.config.set('AppiumCapabilities', 'app', 'C:/Demo.apk')392 # Create element mock393 element = get_mock_element(x=250, y=40, height=40, width=300)394 utils.swipe(element, 50, 100)395 driver_wrapper.driver.swipe.assert_called_once_with(200, 30, 250, 130, None)396def test_swipe_ios_web(driver_wrapper, utils):397 # Configure driver mock398 web_window_size = {'width': 500, 'height': 667}399 native_window_size = {'width': 250, 'height': 450}400 driver_wrapper.driver.get_window_size.return_value = native_window_size401 utils.get_window_size = mock.MagicMock(return_value=web_window_size)402 driver_wrapper.config.set('Driver', 'type', 'ios')403 driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'safari')404 # Create element mock405 element = get_mock_element(x=250, y=40, height=40, width=300)406 utils.swipe(element, 50, 100)407 driver_wrapper.driver.swipe.assert_called_once_with(200, 94, 50, 100, None)408def test_swipe_web(driver_wrapper, utils):409 # Configure driver mock410 driver_wrapper.config.set('Driver', 'type', 'firefox')411 # Create element mock412 element = get_mock_element(x=250, y=40, height=40, width=300)413 with pytest.raises(Exception) as excinfo:414 utils.swipe(element, 50, 100)415 assert 'Swipe method is not implemented in Selenium' == str(excinfo.value)416def test_get_web_element_from_web_element(utils):417 element = WebElement(None, 1)418 web_element = utils.get_web_element(element)419 assert element == web_element420def test_get_web_element_from_page_element(driver_wrapper, utils):421 # Mock Driver.save_web_element = True422 driver_wrapper.config = mock.MagicMock()423 driver_wrapper.config.getboolean_optional.return_value = True424 element = PageElement(By.ID, 'element_id')425 element._web_element = 'mock_element'426 web_element = utils.get_web_element(element)427 assert 'mock_element' == web_element428def test_get_web_element_from_locator(driver_wrapper, utils):429 # Configure driver mock430 driver_wrapper.driver.find_element.return_value = 'mock_element'431 element_locator = (By.ID, 'element_id')432 # Get element and assert response433 web_element = utils.get_web_element(element_locator)434 assert 'mock_element' == web_element435 driver_wrapper.driver.find_element.assert_called_once_with(*element_locator)436def test_get_web_element_from_none(utils):437 web_element = utils.get_web_element(None)438 assert web_element is None439def test_get_web_element_from_unknown(utils):440 web_element = utils.get_web_element(dict())441 assert web_element is None442def test_wait_until_first_element_is_found_locator(driver_wrapper, utils):443 # Configure driver mock444 driver_wrapper.driver.find_element.return_value = 'mock_element'445 element_locator = (By.ID, 'element_id')446 element = utils.wait_until_first_element_is_found([element_locator])447 assert element_locator == element448 driver_wrapper.driver.find_element.assert_called_once_with(*element_locator)449@pytest.mark.usefixtures('driver_wrapper')450def test_wait_until_first_element_is_found_page_element(utils):451 # Mock Driver.save_web_element = True452 driver_wrapper.config = mock.MagicMock()453 driver_wrapper.config.getboolean_optional.return_value = True454 page_element = PageElement(By.ID, 'element_id')455 page_element._web_element = 'mock_element'456 element = utils.wait_until_first_element_is_found([page_element])457 assert page_element == element458@pytest.mark.usefixtures('driver_wrapper')459def test_wait_until_first_element_is_found_none(utils):460 # Mock Driver.save_web_element = True461 driver_wrapper.config = mock.MagicMock()462 driver_wrapper.config.getboolean_optional.return_value = True463 page_element = PageElement(By.ID, 'element_id')464 page_element._web_element = 'mock_element'465 element = utils.wait_until_first_element_is_found([None, page_element])466 assert page_element == element467def test_wait_until_first_element_is_found_timeout(driver_wrapper, utils):468 # Configure driver mock469 driver_wrapper.driver.find_element.side_effect = NoSuchElementException('Unknown')470 element_locator = (By.ID, 'element_id')471 start_time = time.time()472 with pytest.raises(TimeoutException) as excinfo:473 utils.wait_until_first_element_is_found([element_locator])474 end_time = time.time()475 assert 'None of the page elements has been found after 10 seconds' in str(excinfo.value)476 # find_element has been called more than one time477 driver_wrapper.driver.find_element.assert_called_with(*element_locator)478 # Execution time must be greater than timeout479 assert end_time - start_time > 10480def test_wait_until_first_element_is_found_custom_timeout(driver_wrapper, utils):481 # Configure driver mock482 driver_wrapper.driver.find_element.side_effect = NoSuchElementException('Unknown')483 element_locator = (By.ID, 'element_id')484 start_time = time.time()485 with pytest.raises(TimeoutException) as excinfo:486 utils.wait_until_first_element_is_found([element_locator], timeout=15)487 end_time = time.time()488 assert 'None of the page elements has been found after 15 seconds' in str(excinfo.value)489 # find_element has been called more than one time490 driver_wrapper.driver.find_element.assert_called_with(*element_locator)491 # Execution time must be greater than timeout...

Full Screen

Full Screen

utilities.py

Source:utilities.py Github

copy

Full Screen

...51 log_types = ['client', 'server']52 self.logger.debug("Reading logs from '%s' and writing them to log files", ', '.join(log_types))53 for log_type in log_types:54 try:55 self.save_webdriver_logs_by_type(log_type, test_name)56 except (Exception,):57 # Capture exceptions to avoid errors in teardown method58 pass59 def save_webdriver_logs_by_type(self, log_type, test_name):60 try:61 logs = self.driver_wrapper.driver.get_log(log_type)62 except (Exception,):63 return64 if len(logs) > 0:65 from arc.core.driver.driver_manager import DriverManager66 log_file_name = '{}_{}.txt'.format(get_valid_filename(test_name), log_type)67 log_file_name = os.path.join(DriverManager.logs_directory, log_file_name)68 with open(log_file_name, 'a+', encoding='utf-8') as log_file:69 driver_type = self.driver_wrapper.config.get('Driver', 'type')70 log_file.write(71 u"\n{} '{}' test logs with driver = {}\n\n".format(datetime.now(), test_name, driver_type))72 for entry in logs:73 timestamp = datetime.fromtimestamp(float(entry['timestamp']) / 1000.).strftime(...

Full Screen

Full Screen

driver_utils.py

Source:driver_utils.py Github

copy

Full Screen

...54 log_types = self.get_available_log_types()55 self.logger.debug("Reading driver logs of types '%s' and writing them to log files", ', '.join(log_types))56 for log_type in log_types:57 try:58 self.save_webdriver_logs_by_type(log_type, test_name)59 except Exception as exc:60 # Capture exceptions to avoid errors in teardown method61 self.logger.debug("Logs of type '%s' can not be read from driver due to '%s'" % (log_type, str(exc)))62 def get_available_log_types(self):63 """Get log types that are configured in log_types variable or available in current driver64 :returns: log types list65 """66 configured_log_types = self.driver_wrapper.config.get_optional('Server', 'log_types')67 if configured_log_types is None or configured_log_types == 'all':68 if self.driver_wrapper.server_type == 'local':69 log_types = ['browser', 'driver']70 else:71 try:72 log_types = self.driver_wrapper.driver.log_types73 except Exception as exc:74 self.logger.debug("Available log types can not be read from driver due to '%s'" % str(exc))75 log_types = ['client', 'server']76 else:77 log_types = [log_type.strip() for log_type in configured_log_types.split(',') if log_type.strip() != '']78 return log_types79 def save_webdriver_logs_by_type(self, log_type, test_name):80 """Get webdriver logs of the specified type and write them to a log file81 :param log_type: browser, client, driver, performance, server, syslog, crashlog or logcat82 :param test_name: test that has generated these logs83 """84 logs = self.driver_wrapper.driver.get_log(log_type)85 if len(logs) > 0:86 from toolium.driver_wrappers_pool import DriverWrappersPool87 makedirs_safe(DriverWrappersPool.logs_directory)88 log_file_name = '{}_{}.txt'.format(get_valid_filename(test_name), log_type)89 log_file_name = os.path.join(DriverWrappersPool.logs_directory, log_file_name)90 with open(log_file_name, 'a+', encoding='utf-8') as log_file:91 driver_type = self.driver_wrapper.config.get('Driver', 'type')92 log_file.write(93 "\n{} '{}' test logs with driver = {}\n\n".format(datetime.now(), test_name, driver_type))...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run toolium automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful