2016-02-12 92 views
0

我有一个包含5列和一些行的表的页面。当我点击第1列的标题(索引ID是1)时,它按字母顺序对行进行排序。 我想验证该列是否按ABC顺序对行进行排序。 我不知道该怎么做。selenium Python如何检查表列是否按字母顺序排序

我已经编写了Selenium Python代码来点击标题,并且我有可以遍历表格的代码。在for循环中,我想检查一下该列是否按ABC顺序对数据进行排序。 我需要一些帮助如何检查每行中的文本是否以ABC顺序排列。

我给for循环遍历表的代码段是:

def is_column_sorted(self): # Is the columns sorted in ABC order when the header was clicked 
    try: 
     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") 
     for row in rows: 
      # Get the columns 
      col_name = row.find_elements(By.TAG_NAME, "td")[1] # This is the Configuration Name column 
      col_type = row.find_elements(By.TAG_NAME, "td")[3] # This is the Type column 
      col_rows = row.find_elements(By.TAG_NAME, "td")[4] # This is the Rows column 
      print "col_name.text = " 
      print col_name.text 
      print col_type.text 
      print col_rows.text 
      if (col_name.text == "data1"): 
       return True 
     return False 
    except NoSuchElementException, e: 
     print "Element not found " 
     print e 
     self.save_screenshot("data_previews_page_column_sort") 
     return False 

哪些点击头我的测试用例代码段是:

def test_sort_data_preview(self): # On teh Data preview view page click col 1 (Configuration) to sort it 
    print "*** Test sort_data_preview ***" 
    tool_bar = ToolbarPage(self.driver) 
    data_previews_page = tool_bar.clickDataPreviews() 
    data_previews_page.select_a_data_preview(Globals.datapreview_crm_name) 
    data_previews_view_page =  data_previews_page.click_view_link(Globals.datapreview_crm_name) 
    data_previews_view_page.click_column_header_to_sort() 
    data_previews_view_page.is_column_sorted() 

例如Col1中的数据可能是:

Lademo_CRM_Data_Preview 
Test Character Code 
Escr data preview 
Selenium CRM Data Preview 
etc 

当我单击Col1的标题后,网页将按字母顺序排序。 我如何检查它是否正确排序?

感谢, 里亚兹

+0

在对列进行排序之前,我可以遍历行并将列1的值存储到列表中。按ABC顺序对列表进行排序。然后,我单击列进行排序,然后遍历行并将值与列表中的值进行比较。如果匹配,那么列按字母顺序排序。考试通过了。你怎么看? –

回答

0

我真的相信,在测试通过自动化功能测试前端分类是不是最好的做法。如果您有权访问该代码,请改为在那里测试排序算法。

如果你仍然想这样做,我建议在点击排序之前将所有列数据读入列表中,然后使用pythons sorted()函数对列表进行排序。我在下面写了一些伪代码,希望能为你解决。

unsortedlist = self.driver.find_elements(By.Locator, row_element) 
self.driver.find_elements(By.Locator, sort).click() 
sortedTable = self.driver.find_elements(By.Locator, row_element) 
sortedList = sorted(unsortedList, key=str.lower) 
for item in sortedTable: 
    assert sortedTable[i] == sortedList[i] 
+0

这工作,感谢您的帮助 –