Source code for gaiatest.apps.lockscreen.regions.passcode_pad

# 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 By, Wait
from marionette_driver.marionette import Actions

from gaiatest.apps.base import Base
from gaiatest.apps.homescreen.app import Homescreen
from gaiatest.apps.emergency_call.app import EmergencyCall


[docs]class PasscodePad(Base): _lockscreen_passcode_code_locator = (By.ID, 'lockscreen-passcode-code') _lockscreen_passcode_pad_locator = (By.ID, 'lockscreen-passcode-pad') _numeric_button_locator = (By.CSS_SELECTOR, '#lockscreen-passcode-pad a[data-key="%s"]') _emergency_button_locator = (By.CSS_SELECTOR, '#lockscreen-passcode-pad a[data-key="e"]') def __init__(self, marionette): Base.__init__(self, marionette) lockscreen_passcode_pad = self.marionette.find_element(*self._lockscreen_passcode_pad_locator) emergency_button = self.marionette.find_element(*self._emergency_button_locator) # wait button * 4 rows === the pad's height Wait(self.marionette).until( lambda m: lockscreen_passcode_pad.size['height'] == (4 * emergency_button.size['height']))
[docs] def type_passcode(self, passcode): for digit in passcode: button_locator = (self._numeric_button_locator[0], self._numeric_button_locator[1] % digit) # Workaround for bug 1203269 where the Marionette tap() method somehow enters # 2 digits in the passcode pad Actions(self.marionette).press( self.marionette.find_element(*button_locator)).wait(time=0.5).release().perform() return Homescreen(self.marionette)
[docs] def tap_emergency_call(self): self.marionette.find_element(*self._emergency_button_locator).tap() emergency_call = EmergencyCall(self.marionette) return emergency_call