2017-08-08 52 views
0

,並想驗證是列表排序,但我得到的錯誤:硒的Python檢查元素的列表在我的測試我得到的元素列表排序

>  assert emp == sorted(emp) 
E  TypeError: unorderable types: WebElement() < WebElement() 

這裏是我的代碼:

def test_sorted_employee_list(driver): 
    login(driver, username="Admin", password="Password") 
    driver.find_element_by_css_selector("#menu_pim_viewPimModule").click() 
    driver.find_element_by_link_text("First (& Middle) Name").click() 
    emp = employee_list(driver) 
    assert emp == sorted(emp) 

    `def employee_list(driver): 
    userslist = [] 
    while True: 
     try: 
      # goes to first page,second..etc. and gets list of elements 
      for i in range(1, 50): 
       driver.find_element_by_link_text("%s" % i).click() 
       userslist.extend(driver.find_elements_by_xpath\ 
              ("//tbody/tr/td[3]")) 
     except NoSuchElementException: 
      break 
    return userslist` 
+0

按什麼排序?它是如何設想比較WebElement的? –

+0

對於字符串,您可以按字母順序排序。對於整數,您可以按數字排序。對於webelement,你認爲什麼? –

+0

所以這是我的問題,我要做的,檢查是該列表按字母順序排序 –

回答

0

試圖取代這一行

userslist.extend(driver.find_elements_by_xpath("//tbody/tr/td[3]")) 

userslist.extend([elem.text for elem in driver.find_elements_by_xpath("//tbody/tr/td[3]")]) 

獲取文本節點列表而不是WebElements列表

+0

它幫助,謝謝 ,但應該已經添加斷言'assert emp == sorted(emp,key = str.lower)' –

+0

這取決於你想如何排序你的列表。如果你想要'['a','b','A','B']',那麼應該使用'key = str.lower'。否則(如果你想'['A','B','a','b']')那麼你可以指定沒有鍵 – Andersson

+0

Andersson @是的,在我的應用程序中,它通過較低的鍵排序,所以我不得不,謝謝 –