Source code for gaiatest.apps.settings.regions.wifi

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from marionette_driver import expected, By, Wait
from marionette_driver.errors import StaleElementException
from gaiatest.apps.base import Base
from gaiatest.form_controls.binarycontrol import GaiaBinaryControl


[docs]class Wifi(Base): _screen_locator = (By.ID, 'wifi') _wifi_enabled_checkbox_locator = (By.CSS_SELECTOR, '.wifi-enabled gaia-switch') _available_networks_locator = (By.CSS_SELECTOR, '.wifi-availableNetworks > li > aside[class*="wifi-signal"]') _password_input_locator = (By.CSS_SELECTOR, '#wifi-auth input[type="password"]') _password_ok_button_locator = (By.CSS_SELECTOR, '#wifi-auth button[type="submit"]') _connected_message_locator = (By.CSS_SELECTOR, '.wifi-availableNetworks li.active small') _wps_connect_locator = (By.CSS_SELECTOR, '[data-l10n-id="wpsMessage"]') _wps_screen_locator = (By.ID, 'wifi-wps') _wps_selection_locator = (By.CSS_SELECTOR, '[data-l10n-id="wpsMethodSelection"]') _manage_networks_locator = (By.CSS_SELECTOR, '[data-l10n-id="manageNetworks"]') _manage_networks_screen_locator = (By.ID, 'wifi-manageNetworks') _join_hidden_screen_locator = (By.ID, 'wifi-joinHidden') _join_hidden_network_locator = (By.CSS_SELECTOR, '[data-l10n-id="joinHiddenNetwork"]') _security_selector_locator = (By.NAME, 'security') _security_selector_ok_btn_locator = (By.CLASS_NAME, 'value-option-confirm') _manage_certs_locator = (By.CSS_SELECTOR, '[data-l10n-id="manageCertificates"]') _manage_certs_screen_locator = (By.ID, 'wifi-manageCertificates') _import_certs_locator = (By.CSS_SELECTOR, '[data-l10n-id="importCertificate"]') _select_certs_screen_locator = (By.ID, 'wifi-selectCertificateFile') _active_wifi_locator = (By.CSS_SELECTOR, '.wifi-availableNetworks li.active') _forget_locator = (By.CSS_SELECTOR, '#wifi-status span[data-l10n-id="forget"]') @property def screen_element(self): return self.marionette.find_element(*self._screen_locator) @property def wps_screen_element(self): return self.marionette.find_element(*self._wps_screen_locator) @property def manage_network_screen_element(self): return self.marionette.find_element(*self._manage_networks_screen_locator) @property def join_hidden_network_screen_element(self): return self.marionette.find_element(*self._join_hidden_screen_locator) @property def manage_certs_screen_element(self): return self.marionette.find_element(*self._manage_certs_screen_locator) @property def select_certs_screen_element(self): return self.marionette.find_element(*self._select_certs_screen_locator) @property def is_wifi_enabled(self): return self._wifi_switch.is_checked @property def manage_network_button(self): return self.marionette.find_element(*self._manage_networks_locator)
[docs] def enable_wifi(self): self._wifi_switch.enable()
@property def _wifi_switch(self): return GaiaBinaryControl(self.marionette, self._wifi_enabled_checkbox_locator)
[docs] def disable_wifi(self): self._wifi_switch.disable()
[docs] def connect_to_network(self, network_info): # Wait for the networks to be found this_network_locator = ('xpath', "//li/a/span[text()='%s']" % network_info['ssid']) this_network = Wait(self.marionette).until(expected.element_present(*this_network_locator)) this_network.tap() if network_info.get('keyManagement'): password = network_info.get('psk') or network_info.get('wep') if not password: raise Exception('No psk or wep key found in testvars for secured wifi network.') screen_width = int(self.marionette.execute_script('return window.innerWidth')) ok_button = self.marionette.find_element(*self._password_ok_button_locator) Wait(self.marionette).until(lambda m: (ok_button.location['x'] + ok_button.size['width']) == screen_width) password_input = self.marionette.find_element(*self._password_input_locator) Wait(self.marionette).until(expected.element_displayed(password_input)) password_input.send_keys(password) ok_button.tap() connected_message = self.marionette.find_element(*self._connected_message_locator) self.marionette.execute_script("arguments[0].scrollIntoView(false);", [connected_message]) timeout = max(self.marionette.timeout and self.marionette.timeout / 1000, 60) Wait(self.marionette, timeout, ignored_exceptions=StaleElementException).until( lambda m: m.find_element(*self._connected_message_locator).text == "Connected")
[docs] def tap_connect_with_wps(self): element = self.marionette.find_element(*self._wps_connect_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._wps_selection_locator))
[docs] def tap_manage_networks(self): element = self.marionette.find_element(*self._manage_networks_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._join_hidden_network_locator))
[docs] def tap_join_hidden_network(self): element = self.marionette.find_element(*self._join_hidden_network_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._security_selector_locator))
[docs] def tap_security_selector(self): element = self.marionette.find_element(*self._security_selector_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() self.marionette.switch_to_frame() Wait(self.marionette).until(expected.element_displayed(*self._security_selector_ok_btn_locator))
[docs] def tap_security_ok(self): element = self.marionette.find_element(*self._security_selector_ok_btn_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() self.apps.switch_to_displayed_app() Wait(self.marionette).until(expected.element_displayed(*self._security_selector_locator))
[docs] def tap_manage_certs(self): element = self.marionette.find_element(*self._manage_certs_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._import_certs_locator))
[docs] def tap_import_certs(self): element = self.marionette.find_element(*self._import_certs_locator) Wait(self.marionette).until(expected.element_displayed(element)) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._select_certs_screen_locator))
[docs] def tap_active_wifi(self): element = self.marionette.find_element(*self._active_wifi_locator) element.tap() Wait(self.marionette).until(expected.element_displayed(*self._forget_locator))
[docs] def tap_forget_wifi(self): element_to_forget = Wait(self.marionette).until(expected.element_present(*self._forget_locator)) Wait(self.marionette).until(expected.element_displayed(element_to_forget)) element_to_forget.tap() Wait(self.marionette).until(expected.element_not_displayed(element_to_forget))