Advertisement
Guest User

Untitled

a guest
May 30th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.02 KB | None | 0 0
  1. from selenium import webdriver
  2. from selenium.webdriver.common.keys import Keys
  3. from selenium.common.exceptions import TimeoutException
  4. from selenium.common.exceptions import NoSuchElementException
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. from selenium.webdriver.support import expected_conditions as EC
  7. from selenium.webdriver.common.by import By
  8. import json
  9.  
  10. # pornesc Firefox cu direct path to geckodriver
  11. driver = webdriver.Firefox(executable_path='C:\Python\geckodriver.exe')
  12.  
  13. # definesc user, parola si wait time
  14. user = 'lacerta'
  15. pwd = 'yardlabs'
  16. timeout = 5
  17.  
  18. # pun url de la login screen
  19. driver.get('http://yardlabs.eu/live/dashboard/login')
  20.  
  21. try:
  22. # ma loghez efectiv
  23.     username = driver.find_element_by_name('username')
  24.     username.send_keys(user)
  25.    
  26.     password = driver.find_element_by_name('password')
  27.     password.send_keys(pwd)
  28.    
  29.     submit   = driver.find_element_by_xpath("//button[@type='submit']")
  30.    
  31.     submit.click()
  32.    
  33. # astept sa apara elementul cu id 'history'
  34.     element_present = EC.presence_of_element_located((By.ID, 'history'))
  35.     WebDriverWait(driver, timeout).until(element_present)
  36.  
  37.  
  38.     table = driver.find_element_by_id('history')
  39.     head = table.find_element_by_tag_name('thead')
  40.     body = table.find_element_by_tag_name('tbody')
  41.     print ('Succes!')
  42.  
  43. #copiez headerul care e constant
  44.     file_header = []
  45.     file_data = []
  46.    
  47.     head_line = head.find_element_by_tag_name("tr")
  48.     file_header = [header.text.encode('utf8') for header in head_line.find_elements_by_tag_name('th')]
  49.     file_data.append("".join(str(file_header)))
  50.    
  51.     f = open('yard.txt', "r+")
  52.     f.write("".join(str(file_data)))
  53.    
  54. #functie care copiaza datele de pe fiecare pagina de sub header
  55.     total_masuratori = []
  56.     def copy_data(page_number):
  57.        
  58.         masuratori = []
  59.         body_rows = body.find_elements_by_tag_name('tr')
  60.        
  61.         for row in body_rows:
  62.             data = row.find_elements_by_tag_name('td')
  63.             file_row = []
  64.             for datum in data:
  65.                 datum_text = datum.text.encode('utf8')
  66.                 file_row.append(datum_text)
  67.             masuratori.append("".join(str(file_row)))
  68.        
  69.         return masuratori
  70.         #f.write(''+"\n".join(masuratori))
  71.    
  72.        
  73.     #copy_data(1)
  74.    
  75. #parcurg paginile fiecare in parte pana se termina
  76.     page_number = 1
  77.     while True:
  78.         try:
  79.             link = driver.find_element_by_link_text(str(page_number))
  80.             link.click()
  81.             total_masuratori.append(copy_data(page_number))
  82.            
  83.         except NoSuchElementException:
  84.             break
  85.         page_number = page_number+1
  86.              
  87.     json.dump(total_masuratori,
  88.           f,
  89.           sort_keys=True,
  90.           indent=4,
  91.           separators=(',', ': '))
  92.    
  93.     f.close()
  94.    
  95. except NoSuchElementException:
  96.     self.fail("Could not find element on page")
  97.    
  98.  
  99. except TimeoutException:
  100.     print ("Timed out waiting for page to load")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement