2017-07-28 47 views
0

在我的應用程序中,我有一個包含用戶的表格,但該表格可以有多個用戶頁面。 我想用Selenium Webdriver Python獲取所有頁面中所有用戶的列表。 我需要一些算法來計算第一頁的用戶數,然後點擊第二頁數,直到頁面完成,然後返回整個列表。 我有一些想法,但不知道如何實現,像下面 東西:用於獲取元素列表的幾個頁面的Python循環

def users(driver): 
    list_users = [] 
    for list_users in range(n): 
     #selector for click on second page 
     num = num + 1 
     #getting all users from 1 page 
     driver.find_elements_by_css_selector(".even .odd") 
     #click on second page until pages is exist 
     driver.find_elements_by_link_text("%s" % num) 
      until NoSuchElementException 
    return list_users 

我知道它甚至還沒有接近的工作算法,但我試圖解釋什麼,我想

+0

你能提供一個鏈接到您試圖訪問數據? – DJK

+0

@ djk47463 [鏈接](http://hrm.seleniumminutes.com/symfony/web/index.php/admin/viewSystemUsers) login:Admin pass:密碼 –

+0

你需要用戶名還是隻需要總數的用戶? – DJK

回答

0

假設你只需要的人的總數,並且您已經登錄......

people = driver.find_element_by_xpath('//* 
       [@id="frmList_ohrmListComponent"]/div[1]/ul/li[1]').text 
print people 

收益「的53 1-50」,這是從這裏看到

網站索引

enter image description here

,告訴你的人的總量在列表

然後拿到總使用

print people.split()[2] 

,給你的53

值---- ---------編輯-----------------------

讓用戶循環瀏覽標籤和頁面

from math import ceil 
pages = ceil(float(people.split()[2])/50) 

users = [] 
for p in range(1,int(pages)+1): 
    driver.execute_script('javascript:submitPage(%s)' % p) #change page 
    for i in range(1,51): 
     try: 
      user = driver.find_element_by_xpath('//* 
          [@id="resultTable"]/tbody/tr[%s]/td[2]' % i) 
              #change tag____^ 
      users.append(user.text) 
     except: 
      break 

print users 
+0

對不起,我沒有解釋清楚,我需要列表中的所有用戶 –

+0

@IhorHarmatii,更新 – DJK

+0

未解決的參考「人」問題在線頁= ceil(float(人。 split()[2])/ 50) –

0

我們可以用這樣的事情?:

def users1(driver): 
l=() 
while l != NoSuchElementException: 
    userslist = driver.find_elements_by_css_selector(".even .odd") 
    for i in range(1, 50): 
     l = driver.find_element_by_link_text("%s" % i).click() 
    return userslist 
相關問題