def _account_menu_1_9(self, item):
        account = a.get_element_by_xpath(
            "//a[contains(@class, 'skip-account')]")
        a.click_link(account)

        link = a.get_element_by_xpath("//a[@title='%s']" % item)
        a.click_link(link)
    def add_billing_address(self):
        # from the account page
        manage_link = a.get_element_by_xpath("//a[text()='Manage Addresses']")
        a.click_link(manage_link)

        fill_user_form(self._data, version=self._version)
        button = a.get_element_by_xpath("//button[@title='Save Address']")
        a.click_button(button)
    def navigate(self, first, second):
        # no idea how to hover, but there's a false click handler so that works
        hover_link = a.get_element_by_xpath(
            "//li[%s]/*/*[%s]/.." % (
                xpath_contains_class('level0'),
                xpath_contains_text(first))
        )
        a.click_link(hover_link)

        final_link = a.get_element_by_xpath(
            "//li[%s]/*/*[%s]/.." % (
                xpath_contains_class('level1'),
                xpath_contains_text(second))
        )
        a.click_link(final_link)
 def customer_edit_by_email(self, email):
     edit_link = a.get_element_by_xpath(
         "//table[@id='customerGrid_table']"
         "//td[%s]"
         "//.."
         "//a" % (xpath_contains_text(email))
     )
     a.click_link(edit_link)
    def login(self):
        go_to('admin/')
        a.assert_title_contains('Admin')

        fill_user_form(self._data)
        button = a.get_element_by_xpath("//input[@title='Login']")
        a.click_button(button)

        # do away with messages if any
        close = None
        try:
            close = a.get_element_by_xpath(
                "//div[@id='message-popup-window']"
                "//a[@title='close']")
        except AssertionError:
            pass
        if close:
            a.click_link(close)
    def login(self):
        if self._version >= (1, 9, 0, 0):
            self._account_menu_1_9('Log In')
        else:
            a.click_link(a.get_element(text='Log In'))

        # fill in data on login screen
        data = {
            'email': self._data['email_address'],
            'pass': self._data['password'],
        }
        fill_user_form(data, version=self._version)

        button = a.get_element_by_xpath("//button[@title='Login']")
        a.click_button(button)

        e = a.get_element_by_xpath("//p[@class='welcome-msg']")
        assert e.text.upper() == u'WELCOME, MARY BERNARD!', \
            "Login failed: %r" % e.text
    def register(self):
        if self._version >= (1, 9, 0, 0):
            self._account_menu_1_9('Register')
        else:
            a.click_link(a.get_element(text='My Account'))
            button = a.get_element_by_xpath(
                "//button[@title='Create an Account']")
            a.click_button(button)


        # fill in data for mary and register
        fill_user_form(self._data, version=self._version)

        if self._version >= (1, 9, 0, 0):
            title = 'Register'
        else:
            title = 'Submit'
        button = a.get_element_by_xpath("//button[@title='%s']" % title)
        a.click_button(button)
    def rebuild_indexes(self):
        self.navigate('System', 'Index Management')

        select_all_link = a.get_element_by_xpath(
            "//a[%s]" % (
                xpath_contains_text('Select All'))
        )
        a.click_link(select_all_link)
        a.set_dropdown_value('indexer_processes_grid_massaction-select',
            'Reindex Data')
        self.click_magento_button('Submit')
user.login()

# search for tv
a.write_textfield('search', 'tv')
common.click_button_by_title('Search')

# click it
common.click_button_by_title('Add to Cart', multiple=True)

common.click_button_by_title('Proceed to Checkout', multiple=True)

a.wait_for(a.assert_displayed, 'checkout-step-billing')

a.click_button(a.get_element_by_xpath(
    "//div[@id='checkout-step-billing']"
    "//button[@title='Continue']"))

# in 1.4 it doesn't automatically proceed to shipping method
# because Use Billing Address is not active
if common.get_version() < (1, 5, 0, 0):
    check = a.get_element_by_xpath("//input[@id='shipping:same_as_billing']")
    a.wait_for(a.assert_displayed, check)
    check.click()
    # we need the right continue button, so roll by hand
    button = a.get_element_by_xpath(
        "//form[@id='co-shipping-form']//button[@title='Continue']")
    button.click()

a.wait_for(a.assert_displayed, 'checkout-step-shipping_method')