2016-02-15 4 views
0

У меня есть список веб-элементов. Я бы хотел отсортировать его по алфавиту. Для типа данных веб-элементов не существует функции сортировки.
я получил следующее сообщение об ошибке, когда я попытался сортировать:Selenium Python можно сортировать список элементов в алфавитном порядке

Traceback (most recent call last): 
    File "C:\Webdriver\ClearCore Regression Test\ClearCore - Regression Test\TestCases\DataPreviewsPage_TestCase.py", line 375, in test_a2_sort_data_preview 
    print data_previews_page.compare_lists_2() 
    File "C:\Webdriver\ClearCore 501 Regression Test\ClearCore - Regression Test\Pages\data_previews.py", line 610, in compare_lists_2 
    sortedTable = DataPreviewsPage.column1_list_before_sort.sort() # This table holds the data previews name in sorted order of what it should be 
AttributeError: 'NoneType' object has no attribute 'sort' 

Мой фрагмент кода:

class DataPreviewsPage(BasePage): 
      column1_list_before_sort = None # This list will hold the data from col1 before ClearCore has done the sort. This list will then be sorted into ABC order. We can then use it to compare with the list after ClearCore has done the sort 

def compare_lists_2(self): 
     sortedTable = DataPreviewsPage.column1_list_before_sort.sort() # This table holds the data previews name in sorted order of what it should be 
     sortedList = DataPreviewsPage.list_after_ClearCore_has_sorted # This compares the sort with the expected sort (expected sort = sortedTable) 
     for item in sortedTable: 
      print sortedTable[item] 
      print sortedList[item] 

метод, который возвращает список веб-элементов:

def get_table_column_1_values_into_a_list_before_ClearCore_has_done_the_sort(self): 
     try: 
      WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.ID, 'data_configuration_data_previews_ct_fields_body'))) 
      table_id = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.ID, 'data_configuration_data_previews_ct_fields_body'))) 
      rows = table_id.find_elements(By.TAG_NAME, "tr") 
      return [row.find_elements(By.TAG_NAME, "td")[1].text for row in rows] # returns the data preview name from col1 for each row 
     except NoSuchElementException, e: 
      print e 
      return False 

Как могу ли я отсортировать список веб-элементов по алфавиту? Переменная web-элементов - "column1_list_before_sort", я бы хотел отсортировать ее.

Спасибо, Риаза

ответ

0

Вы можете создать свой Cutom компаратор для сортировки списка объектов в пользовательском пути, пример

def comparator(e1, e2): 
    return e1.text > e2.text 

array.sort(comparator) 

Однако, я думаю, что проблема является значением column1_list_before_sort .Since ошибка AttributeError: 'NoneType' object has no attribute 'sort', это ничего не значит внутри column1_list_before_sort.

+0

Мне удалось создать свой собственный компаратор. Благодаря, –

Смежные вопросы