示例#1
0
    def check_column_sort(self, column_heading):
        b = self.browser
        column_headings = [th.text for th in
                b.find_elements_by_xpath('//table[@id="widget"]/thead//th')]
        self.assertIn(column_heading, column_headings)
        column_index = column_headings.index(column_heading) + 1 # xpath indices are 1-based
        b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a' % column_index).click()

        cell_values = []
        # Next page number
        # Assume our current page is 1
        next_page = 2
        while True:
            cell_values.extend(cell.text for cell in
                    b.find_elements_by_xpath('//table[@id="widget"]/tbody/tr/td[%d]' % column_index))
            # Keeping scrolling through pages until we have seen at least two distinct cell values
            # (so that we can see that it is really sorted)
            if len(set(cell_values)) > 1:
                break
            try:
                b.find_element_by_xpath('//div[contains(@class, "pagination")]'
                        '//ul/li/a[normalize-space(string())="%s"]' % next_page).click()
            except NoSuchElementException:
                raise AssertionError('Tried all pages, but every cell had the same value!')
            next_page += 1
        assert_sorted(cell_values, key=lambda x: x.lower())
示例#2
0
    def check_column_sort(self, column_heading):
        b = self.browser
        column_headings = [
            th.text for th in b.find_elements_by_xpath(
                '//table[@id="widget"]/thead//th')
        ]
        self.assertIn(column_heading, column_headings)
        column_index = column_headings.index(
            column_heading) + 1  # xpath indices are 1-based
        b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a' %
                                column_index).click()

        cell_values = []
        # Next page number
        # Assume our current page is 1
        next_page = 2
        while True:
            cell_values.extend(cell.text for cell in b.find_elements_by_xpath(
                '//table[@id="widget"]/tbody/tr/td[%d]' % column_index))
            # Keeping scrolling through pages until we have seen at least two distinct cell values
            # (so that we can see that it is really sorted)
            if len(set(cell_values)) > 1:
                break
            try:
                b.find_element_by_xpath(
                    '//div[contains(@class, "pagination")]'
                    '//ul/li/a[normalize-space(string())="%s"]' %
                    next_page).click()
            except NoSuchElementException:
                raise AssertionError(
                    'Tried all pages, but every cell had the same value!')
            next_page += 1
        assert_sorted(cell_values, key=lambda x: x.lower())
示例#3
0
 def check_column_sort(self, column, sort_key=None):
     b = self.browser
     b.get(get_server_base() + 'recipes/mine')
     b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a[@href]' % column).click()
     row_count = len(b.find_elements_by_xpath('//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = [b.find_element_by_xpath('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column)).text
                    for row in range(1, row_count + 1)]
     assert_sorted(cell_values, key=sort_key)
示例#4
0
 def check_column_sort(self, column, sort_key=None):
     b = self.browser
     b.get(get_server_base() + 'recipes/mine')
     b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a[@href]' % column).click()
     row_count = len(b.find_elements_by_xpath('//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = [b.find_element_by_xpath('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column)).text
                    for row in range(1, row_count + 1)]
     assert_sorted(cell_values, key=sort_key)
示例#5
0
 def check_column_sort(self, column, sort_key=None):
     sel = self.selenium
     sel.open('recipes/mine')
     sel.click('//table[@id="widget"]/thead//th[%d]//a[@href]' % column)
     sel.wait_for_page_to_load('30000')
     row_count = int(sel.get_xpath_count(
             '//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = [sel.get_text('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column))
                    for row in range(1, row_count + 1)]
     assert_sorted(cell_values, key=sort_key)
示例#6
0
 def test_searchbar_dropdowns_are_sorted(self):
     b = self.browser
     b.get(get_server_base())
     b.find_element_by_link_text('Show Search Options').click()
     wait_for_animation(b, '#searchform')
     table_options = b.find_element_by_name('systemsearch-0.table')\
             .find_elements_by_tag_name('option')
     assert_sorted([option.text for option in table_options])
     Select(b.find_element_by_name('systemsearch-0.table'))\
         .select_by_visible_text('Key/Value')
     keyvalue_options = b.find_element_by_name('systemsearch-0.keyvalue')\
             .find_elements_by_tag_name('option')
     assert_sorted([option.text for option in keyvalue_options])
 def test_searchbar_dropdowns_are_sorted(self):
     b = self.browser
     b.get(get_server_base())
     b.find_element_by_link_text('Show Search Options').click()
     wait_for_animation(b, '#searchform')
     table_options = b.find_element_by_name('systemsearch-0.table')\
             .find_elements_by_tag_name('option')
     assert_sorted([option.text for option in table_options])
     Select(b.find_element_by_name('systemsearch-0.table'))\
         .select_by_visible_text('Key/Value')
     keyvalue_options = b.find_element_by_name('systemsearch-0.keyvalue')\
             .find_elements_by_tag_name('option')
     assert_sorted([option.text for option in keyvalue_options])
示例#8
0
 def test_can_sort_by_id(self):
     column = 1
     b = self.browser
     b.get(get_server_base() + 'recipes/mine')
     b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a[@href]' % column).click()
     row_count = len(b.find_elements_by_xpath('//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = []
     for row in range(1, row_count + 1):
         raw_value = b.find_element_by_xpath('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column)).text
         m = re.match(r'R:(\d+)$', raw_value)
         assert m.group(1)
         cell_values.append(int(m.group(1)))
     assert_sorted(cell_values)
示例#9
0
 def test_can_sort_by_id(self):
     column = 1
     b = self.browser
     b.get(get_server_base() + 'recipes/mine')
     b.find_element_by_xpath('//table[@id="widget"]/thead//th[%d]//a[@href]' % column).click()
     row_count = len(b.find_elements_by_xpath('//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = []
     for row in range(1, row_count + 1):
         raw_value = b.find_element_by_xpath('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column)).text
         m = re.match(r'R:(\d+)$', raw_value)
         assert m.group(1)
         cell_values.append(int(m.group(1)))
     assert_sorted(cell_values)
示例#10
0
 def test_can_sort_by_id(self):
     column = 1
     sel = self.selenium
     sel.open('recipes/mine')
     sel.click('//table[@id="widget"]/thead//th[%d]//a[@href]' % column)
     sel.wait_for_page_to_load('30000')
     row_count = int(sel.get_xpath_count(
             '//table[@id="widget"]/tbody/tr/td[%d]' % column))
     self.assertEquals(row_count, 24)
     cell_values = []
     for row in range(1, row_count + 1):
         raw_value = sel.get_text('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column))
         m = re.match(r'R:(\d+)$', raw_value)
         assert m.group(1)
         cell_values.append(int(m.group(1)))
     assert_sorted(cell_values)
示例#11
0
    def check_column_sort(self, column):
        sel = self.selenium
        sel.click('//table[@id="widget"]/thead//th[%d]//a[@href]' % column)
        sel.wait_for_page_to_load('30000')

        cell_values = []
        while True:
            row_count = int(sel.get_xpath_count('//table[@id="widget"]/tbody/tr/td[%d]' % column))
            cell_values += [sel.get_text('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column))
                           for row in range(1, row_count + 1)]
            # Keeping scrolling through pages until we have seen at least two distinct cell values
            # (so that we can see that it is really sorted)
            if len(set(cell_values)) > 1:
                break
            if sel.get_xpath_count('//div[@class="list"]//a[text()=">"]') != 2:
                raise AssertionError('Tried all pages, but every cell had the same value!')
            sel.click('//div[@class="list"]//a[text()=">"]')
            sel.wait_for_page_to_load('30000')
        assert_sorted(cell_values, key=lambda x: x.lower())
示例#12
0
    def check_column_sort(self, column):
        sel = self.selenium
        sel.click('//table[@id="widget"]/thead//th[%d]//a[@href]' % column)
        sel.wait_for_page_to_load('30000')

        cell_values = []
        # Next page number
        # Assume our current page is 1
        next_page = 2
        while True:
            row_count = int(sel.get_xpath_count('//table[@id="widget"]/tbody/tr/td[%d]' % column))
            cell_values += [sel.get_text('//table[@id="widget"]/tbody/tr[%d]/td[%d]' % (row, column))
                           for row in range(1, row_count + 1)]
            # Keeping scrolling through pages until we have seen at least two distinct cell values
            # (so that we can see that it is really sorted)
            if len(set(cell_values)) > 1:
                break
            try:
                sel.click('//div[contains(@class, "pagination")]//ul/li/a[normalize-space(string())="%s"]' % next_page)
            except Exception:
                raise AssertionError('Tried all pages, but every cell had the same value!')
            next_page += 1
            sel.wait_for_page_to_load('30000')
        assert_sorted(cell_values, key=lambda x: x.lower())