| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 
 |  
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import selenium.common.exceptions
from selenium.common.exceptions import NoSuchElementException,TimeoutException
from selenium.webdriver.remote.webelement import WebElement
import time
import sys,os
 
sys.excepthook = sys.__excepthook__
 
 
print('sys.argv[0] =', sys.argv[0])             
pathname = os.path.dirname(sys.argv[0])        
print('path =', pathname)
print('full path =', os.path.abspath(pathname)) 
 
NB_REPETITIONS=2
TIME_WAIT_ELEMENT_CHANGE_WEBPAGE=10
#nom temporaire fichier résultat
fileNameResult="temp.txt"
isConnected=False
isAlreadyConnected=False
display = Display(visible=0, size=(1024, 768))
 
def send_keys(el: WebElement, keys: str):
	for i in range(len(keys)):
		el.send_keys(keys[i])
		#time.sleep(2)
 
def initialize_Driver():
	opts = Options()
	if sys.argv[5] == 'PROD' :
		opts.add_argument("--no-sandbox")
		opts.add_argument("--disable-setuid-sandbox")
		display.start()        
		driver = webdriver.Chrome(options=opts)        
	else:    
		opts.binary_location="/usr/bin/chromium-browser" #path to chromium binary
		#opts.add_argument("--headless")
		#opts.add_argument('--user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36"')
		opts.add_experimental_option("excludeSwitches", ["enable-automation"])
		opts.add_experimental_option('useAutomationExtension', False)
		#opts.add_argument("--disable-blink-features")
		#opts.add_argument('--incognito')
		#opts.add_argument('--disable-infobars')
		#opts.add_argument("--disable-blink-features=AutomationControlled")
		#opts.add_argument("--disable-extensions")
		driver = webdriver.Chrome(options=opts)
 
	driver.delete_all_cookies()
	driver.maximize_window()
	driver.set_page_load_timeout(60)
	return driver;
 
 
 
 
if len(sys.argv) < 5:
	print ("Veuillez saisir en 1er parametre du script, le nom de l'operateur")
	print ("Veuillez saisir en 2ieme/3ieme parametre du script, le login/password")
	print ("Veuillez saisir en 4ieme parametre du script, le nom du fichier contenant le résultat")
	print ("Veuillez saisir en 5ieme parametre du script, l'environnement d'execution")
	#print ("Veuillez saisir en 6ieme parametre du script, le nom du dossier du driver web chrome")     
else:
	sys.argv[1]
	fileNameResult=sys.argv[4]
	loginEnter=sys.argv[2]
	passwordEnter=sys.argv[3]
	print(fileNameResult)   
	if sys.argv[1] == 'sfr' :
		print ("Operateur SFR")
		### initialisation du résultat à False
		f=open(fileNameResult,"w")
		f.write(str(isConnected))
		f.close()  
		for x in range(NB_REPETITIONS):
			driver=initialize_Driver()            
			driver.get("https://hotspot.wifi.sfr.fr/")           
			print ("tentative N: ",x)
 
			try:
				print ("l'adresse courante lancé est: ",driver.current_url) 
				element = WebDriverWait(driver, TIME_WAIT_ELEMENT_CHANGE_WEBPAGE).until(EC.presence_of_element_located((By.ID, "login")))
				element = WebDriverWait(driver, TIME_WAIT_ELEMENT_CHANGE_WEBPAGE).until(EC.presence_of_element_located((By.ID, "password")))
				elementLogin = driver.find_element_by_xpath("//input[@id='login']")
				print ("login /"+ loginEnter+"/"+passwordEnter+"/" )
				print ("length: ",len(loginEnter),"/",len(passwordEnter) )
				#elementLogin.send_keys(loginEnter)
				elementLogin.clear()
				time.sleep(2)
				send_keys(elementLogin,loginEnter) 
				time.sleep(5)
				elementPassword = driver.find_element_by_xpath("//input[@id='password']")
				#elementPassword.send_keys(passwordEnter)
				elementPassword.clear()
				time.sleep(2)                
				send_keys(elementPassword,passwordEnter) 
				time.sleep(2)
				time.sleep(2)
				#elementCGU
				driver.find_element_by_xpath("//input[@id='conditions']").click()
				time.sleep(5)
				driver.find_element_by_xpath("//input[@name='connexion']").click()
 
				# Case Failed Authentification
				element=WebDriverWait(driver,10).until(
				EC.presence_of_element_located((By.ID, "fermerBox"))
 
				)
 
				driver.find_element_by_xpath("//div[@class='sprite-fermer']").click()
				#time.sleep(2)
 
 
				print("FIN DU PROCESSUS NORMAL")
			except Exception:
				print ("OH an exception")
				try:
					print ("Verification du Timer si presence")
					element=WebDriverWait(driver,15).until(
					EC.presence_of_element_located((By.ID, "theTimer")))
					element=WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.ID, "theTimer"), "5 secondes"))
					element=WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.ID, "theTimer"), "3 secondes"))
 
				except NoSuchElementException:
					print ("element Timer non trouve")
				except TimeoutException:
					print("TimeOut dépassé pour trouver l'élément theTimer")    
				else:
					#time.sleep(5)
					print (driver.current_url)
					#driver.minimize_window()
					isConnected=True
					f=open(fileNameResult,"w")
					f.write(str(isConnected))
					f.close()
					driver.quit()
					print("Connexion reussi --- FERMETURE DU BROWSER")
					#driver.close()
					break	
 
			else:
				print ("no exception")
			finally:
 
				driver.quit()
				print("FERMETURE DU BROWSER")
				print("finished process operateur: ",x) | 
Partager