Exemple #1
0
 def test_long_press_fail(self):
     testAction = self.marionette.absolute_url("testAction.html")
     self.marionette.navigate(testAction)
     button = self.marionette.find_element(By.ID, "button1Copy")
     action = Actions(self.marionette)
     action.press(button).long_press(button, 5)
     self.assertRaises(MarionetteException, action.perform)
Exemple #2
0
 def test_long_press_fail(self):
     testAction = self.marionette.absolute_url("testAction.html")
     self.marionette.navigate(testAction)
     button = self.marionette.find_element(By.ID, "button1Copy")
     action = Actions(self.marionette)
     action.press(button).long_press(button, 5)
     self.assertRaises(MarionetteException, action.perform)
    def test_download_pdf(self):
        m = self.marionette

        m.set_search_timeout(1000)
        m.set_window_size(1024, 300)

        with m.using_context('content'):

            current_window = m.current_chrome_window_handle

            m.navigate(self.URL)
            download_button = m.find_element('id', 'download')
            action = Actions(m)
            action.click(download_button)
            action.wait(time=3)
            action.perform()

            closed_window = 0
            with m.using_context('chrome'):
                for window in m.chrome_window_handles:
                    if window != current_window:
                        m.switch_to_window(window)
                        info_msg = m.find_element('id', 'info.body')
                        self.assertRegexpMatches(
                            info_msg.text,
                            'Tails',
                            msg='Pop up window text does not include Tails')
                        m.close()
                        closed_window += 1
                m.switch_to_window(current_window)
            self.assertEqual(closed_window, 1, msg="no download pop up")
Exemple #4
0
def open_page(client, post):
    while len(client.window_handles) == 1:
        # Fuzzy is required to enable the browser to lost the focus and a click that work
        # To use only if the website lags a lot and is full of js trash
        # removeOtherStrings = "window.scrollTo(0,(Math.floor(Math.random() * (document.documentElement.scrollHeight))))"
        # client.execute_script(removeOtherStrings)
        Actions(client).middle_click(post).perform()
        time.sleep(0.4)
    def test_download_pdf(self):
        m = self.marionette

        m.set_search_timeout(1000)
        m.set_window_size(1024, 300)

        with m.using_context('content'):

            current_window = m.current_chrome_window_handle

            m.navigate(self.URL)
            download_button = m.find_element('id', 'download')
            action = Actions(m)
            action.click(download_button)
            action.wait(time=3)
            action.perform()

            closed_window = 0
            with m.using_context('chrome'):
                for window in m.chrome_window_handles:
                    if window != current_window:
                        m.switch_to_window(window)
                        info_msg = m.find_element('id', 'info.body')
                        self.assertRegexpMatches(info_msg.text, 'Tails',
                                msg='Pop up window text does not include Tails')
                        m.close()
                        closed_window += 1
                m.switch_to_window(current_window)
            self.assertEqual(closed_window, 1, msg="no download pop up")
Exemple #6
0
    def signal_user_active(self):
        """Signal to the browser that the user is active.

        Normally when being driven by marionette the browser thinks the
        user is inactive the whole time because user activity is
        detected by looking at key and mouse events.

        This would be a problem for this test because user inactivity is
        used to schedule some GCs (in particular shrinking GCs), so it
        would make this unrepresentative of real use.

        Instead we manually cause some inconsequential activity (a press
        and release of the shift key) to make the browser think the user
        is active.  Then when we sleep to allow things to settle the
        browser will see the user as becoming inactive and trigger
        appropriate GCs, as would have happened in real use.
        """
        action = Actions(self.marionette)
        action.key_down(Keys.SHIFT)
        action.key_up(Keys.SHIFT)
        action.perform()
    def signal_user_active(self):
        """Signal to the browser that the user is active.

        Normally when being driven by marionette the browser thinks the
        user is inactive the whole time because user activity is
        detected by looking at key and mouse events.

        This would be a problem for this test because user inactivity is
        used to schedule some GCs (in particular shrinking GCs), so it
        would make this unrepresentative of real use.

        Instead we manually cause some inconsequential activity (a press
        and release of the shift key) to make the browser think the user
        is active.  Then when we sleep to allow things to settle the
        browser will see the user as becoming inactive and trigger
        appropriate GCs, as would have happened in real use.
        """
        action = Actions(self.marionette)
        action.key_down(Keys.SHIFT)
        action.key_up(Keys.SHIFT)
        action.perform()
    def open_tab_in_background(self):
        with self.marionette.using_context("content"):
            link = self.marionette.find_element(By.ID, "new-tab")

            action = Actions(self.marionette)
            action.key_down(self.mod_key).click(link).perform()
    def open_tab_in_background(self):
        with self.marionette.using_context("content"):
            link = self.marionette.find_element(By.ID, "new-tab")

            action = Actions(self.marionette)
            action.key_down(self.mod_key).click(link).perform()
 def __init__(self, marionette):
     self.marionette = marionette
     self.CHROME = 'chrome'
     self.CONTENT = 'content'
     self.set_context(self.CONTENT)
     self.action = Actions(marionette)
Exemple #11
0
class Base(object):

    def __init__(self, marionette):
        self.marionette = marionette
        self.CHROME = 'chrome'
        self.CONTENT = 'content'
        self.set_context(self.CONTENT)
        self.action = Actions(marionette)

    def launch(self, url):
        if url is not None:
            regex = re.compile(
                r'^(?:http|ftp)s?://'
                r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)'
                r'+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|'
                r'localhost|'
                r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
                r'(?::\d+)?'
                r'(?:/?|[/?]\S+)$', re.IGNORECASE)
            if regex.match(url):
                self.marionette.navigate(url)
            else:
                raise ValueError('Url is malformed.')
        else:
            raise ValueError("Url must contain a value.")

    def is_element_present(self, by, locator):
        try:
            self.marionette.find_element(by, locator)
            return True
        except NoSuchElementException:
            return False

    def is_element_displayed(self, by, locator):
        try:
            return self.marionette.find_element(by, locator).is_displayed()
        except NoSuchElementException:
            return False

    def wait_for_element_displayed(self, by, locator):
        return Wait(self.marionette).until(expected.element_displayed(
            Wait(self.marionette).until(
                expected.element_present(by, locator))))

    def wait_for_element_present(self, by, locator):
        Wait(self.marionette).until(expected.element_present(by, locator))

    def wait_for_element_enabled(self, by, locator):
        Wait(self.marionette).until(
            expected.element_enabled(lambda m: m.find_element(by, locator)))

    def wait_for_element_not_displayed(self, by, locator):
        Wait(self.marionette).until(expected.element_not_displayed(
            Wait(self.marionette).until(
                expected.element_present(by, locator))))

    def wait_for_element_not_present(self, by, locator):
        Wait(self.marionette).until(expected.element_not_present(by, locator))

    def wait_for_element_not_enabled(self, by, locator):
        Wait(self.marionette).until(
            expected.element_not_enabled(
                lambda m: m.find_element(by, locator)))

    def set_context(self, context):
        if context != self.CHROME and context != self.CONTENT:
            raise AttributeError(
                '{} is not a context that you can switch to'.format(context))
        else:
            self.marionette.set_context(context)

    def click_element(self, by, locator):
        self.marionette.find_element(by, locator).click()

    def send_keys_to_element(self, by, locator, string):
        self.marionette.find_element(by, locator).send_keys(string)

    def wait(self, time):
        self.action.wait(time).perform()