diff options
Diffstat (limited to 'testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py')
-rw-r--r-- | testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py b/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py new file mode 100644 index 000000000..2cf67ce7f --- /dev/null +++ b/testing/marionette/puppeteer/firefox/firefox_puppeteer/ui/browser/notifications.py @@ -0,0 +1,116 @@ +# 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 abc import ABCMeta + +from marionette_driver import By + +from firefox_puppeteer.ui.base import UIBaseLib + + +class BaseNotification(UIBaseLib): + """Abstract base class for any kind of notification.""" + + __metaclass__ = ABCMeta + + @property + def close_button(self): + """Provide access to the close button. + + :returns: The close button. + """ + return self.element.find_element(By.ANON_ATTRIBUTE, + {'anonid': 'closebutton'}) + + @property + def label(self): + """Provide access to the notification label. + + :returns: The notification label. + """ + return self.element.get_attribute('label') + + @property + def origin(self): + """Provide access to the notification origin. + + :returns: The notification origin. + """ + return self.element.get_attribute('origin') + + def close(self, force=False): + """Close the notification. + + :param force: Optional, if True force close the notification. + Defaults to False. + """ + if force: + self.marionette.execute_script('arguments[0].click()', + script_args=[self.close_button]) + else: + self.close_button.click() + + self.window.wait_for_notification(None) + + +class AddOnInstallBlockedNotification(BaseNotification): + """Add-on install blocked notification.""" + + @property + def allow_button(self): + """Provide access to the allow button. + + :returns: The allow button. + """ + return self.element.find_element( + By.ANON_ATTRIBUTE, {'anonid': 'button'}).find_element( + By.ANON_ATTRIBUTE, {'anonid': 'button'}) + + +class AddOnInstallConfirmationNotification(BaseNotification): + """Add-on install confirmation notification.""" + + @property + def addon_name(self): + """Provide access to the add-on name. + + :returns: The add-on name. + """ + label = self.element.find_element( + By.CSS_SELECTOR, '#addon-install-confirmation-content label') + return label.get_attribute('value') + + def cancel_button(self): + """Provide access to the cancel button. + + :returns: The cancel button. + """ + return self.element.find_element( + By.ID, 'addon-install-confirmation-cancel') + + def install_button(self): + """Provide access to the install button. + + :returns: The install button. + """ + return self.element.find_element( + By.ID, 'addon-install-confirmation-accept') + + +class AddOnInstallCompleteNotification(BaseNotification): + """Add-on install complete notification.""" + + pass + + +class AddOnInstallFailedNotification(BaseNotification): + """Add-on install failed notification.""" + + pass + + +class AddOnProgressNotification(BaseNotification): + """Add-on progress notification.""" + + pass |