【问题标题】:selenium Python how to check if a table column is sorted alphabeticallyselenium Python如何检查表列是否按字母顺序排序
【发布时间】:2016-02-13 02:08:14
【问题描述】:

我有一个包含 5 列和一些行的表格的页面。当我单击第 1 列的标题(索引 ID 为 1)时,它按字母顺序对行进行排序。 我想验证该列是否按 ABC 顺序对行进行了排序。 这部分我不知道怎么做。

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

我的 for 循环遍历表的代码 sn-p 是:

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

单击标题的我的TestCase代码sn-p是:

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 的标题后,网页将按字母顺序排序。 如何检查它是否正确排序?

谢谢, 里亚兹

【问题讨论】:

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

标签: python-2.7 selenium selenium-webdriver


【解决方案1】:

我坚信通过自动化功能测试在前端测试排序并不是最佳实践。如果您可以访问代码,请改为在那里测试排序算法。

如果您仍然想这样做,我建议在单击排序之前将所有列数据读取到列表中,然后使用 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2020-10-31
    相关资源
    最近更新 更多