How to use indietro method in SeleniumBase

Best Python code snippet using SeleniumBase

Percorso_modul.py

Source:Percorso_modul.py Github

copy

Full Screen

1import random2QTA_CASELLE_TOTALI = 403 #caselle con effetto randomico (NON include l'ultima e la penultima casella che sono SEMPRE UGUALI)4QTA_CASELLE_DINAMICHE = 225#Per ogni effetto c'è un array con tre elementi: il codice identificativo,6# il totale di volte in cui deve apparire e il nome che compare nella casella7TIRA_DI_NUOVO = [0, 4, "X2"]8INDIETRO_DI_UNO = [1, 4, "-1"]9INDIETRO_DI_TRE = [2, 2, "-3"]10AVANTI_DI_UNO = [3, 4, "+1"]11AVANTI_DI_QUATTRO = [4, 2, "+4"]12FERMO_DA_UNO = [5, 4, "ALT"]13FERMO_DA_DUE = [6, 2, "ALT X2"]14 15 #compaiono una sola volta, non serve il secondo elemento16TORNA_ALL_INIZIO = [7, "DA CAPO !"]17VITTORIA = [8, "VITTORIA !!!"]18class Percorso():19 def __init__(self):20 random.seed()21 """Dizionario che avrà come chiave la posizione (la casella) e come valore22 il codice dell'effetto23 NON CI SONO TUTTE LE POSIZIONI, solo quelle che mi servono, cioè SOLO QUELLE24 CHE HANNO UN EFFETTO (tutte quelle che non ci sono sono vuote semplicemente)25 """26 self.dictCaselle = dict()27 28 """Cicla finchè non sono stati "piazzati" tutti gli effetti. Ad ogni giro tira a sorte29 una posizione casuale, e se non è ancora mai stata sorteggiata, tira a sorte un codice30 (il codice dell'effetto), e se il codice è valido, aggiunge nel dizionario un elemento31 con chiave la posizione N della casella e come valore il codice uscito.32 Il codice sorteggiato può non essere valido per due motivi:33 1 - quel determinato effetto è stato già piazzato il massimo di volte34 2 - quel determinato effetto causa UN LOOP INFINITO. Dato che gli effetti35 vengono applicati anche quando si finisce su uno di essi a causa di un altro36 effetto potrebbero crearsi LOOP infiniti. Un ESEMPIO BANALE:37 sulla casella 5 c'è "Avanti di 1" e sulla casella 6 c'è "Indietro di 1"38 ==> la pedina continuerà ad andare avanti di 1 e tornare indietro di 139 """40 flagTuttiEffettiSettati = False41 while(not flagTuttiEffettiSettati):42 flagPosizioneNonValida = True43 while(flagPosizioneNonValida):44 #ESCLUDO le ultime 2 pos che sono COSTANTI e la PRIMA, la lascio vuota45 # (lascio vuota dato che vi è un effetto che riporta il giocatore sulla46 # 1° casella)47 randomPos = random.randint(2, (QTA_CASELLE_TOTALI-2))48 if(randomPos not in self.dictCaselle.keys()):49 flagPosizioneNonValida = False50 51 if(self.contaEffettiSettati() == QTA_CASELLE_DINAMICHE):52 flagTuttiEffettiSettati = True53 else:54 flagEffettoNonValido = True55 randomCodCasella = random.randint(0,6)56 57 if(randomCodCasella == TIRA_DI_NUOVO[0]):58 if(self.contaEffettiSettati(TIRA_DI_NUOVO[0]) < TIRA_DI_NUOVO[1] ):59 flagEffettoNonValido = False60 61 elif(randomCodCasella == INDIETRO_DI_UNO[0]):62 if(self.contaEffettiSettati(INDIETRO_DI_UNO[0]) < INDIETRO_DI_UNO[1] ):63 if(randomPos > 1):64 flagEffettoNonValido = False65 elif(randomCodCasella == INDIETRO_DI_TRE[0]):66 if(self.contaEffettiSettati(INDIETRO_DI_TRE[0]) < INDIETRO_DI_TRE[1] ):67 if(randomPos > 3):68 flagEffettoNonValido = False69 elif(randomCodCasella == AVANTI_DI_UNO[0]):70 if(self.contaEffettiSettati(AVANTI_DI_UNO[0]) < AVANTI_DI_UNO[1] ):71 flagEffettoNonValido = False72 73 elif(randomCodCasella == AVANTI_DI_QUATTRO[0]):74 if(self.contaEffettiSettati(AVANTI_DI_QUATTRO[0]) < AVANTI_DI_QUATTRO[1] ):75 #intanto QTA_CASELLE_TOTALI -1 NON PUÒ ESSERE (es.su 40 caselle NON DEVE ESSSERE la 38°)76 if( randomPos < QTA_CASELLE_TOTALI-2 ):77 flagEffettoNonValido = False78 79 elif(randomCodCasella == FERMO_DA_UNO[0]):80 if(self.contaEffettiSettati(FERMO_DA_UNO[0]) < FERMO_DA_UNO[1] ):81 flagEffettoNonValido = False82 83 elif(randomCodCasella == FERMO_DA_DUE[0]):84 if(self.contaEffettiSettati(FERMO_DA_DUE[0]) < FERMO_DA_DUE[1] ):85 flagEffettoNonValido = False86 87 88 if(flagEffettoNonValido == False):89 self.dictCaselle[randomPos] = randomCodCasella90 91 self.controllaPossibiliLoop()92 self.controllaQtaCaselleVicino()93 94 self.dictCaselle[QTA_CASELLE_TOTALI-1] = TORNA_ALL_INIZIO[0]95 self.dictCaselle[QTA_CASELLE_TOTALI] = VITTORIA[0]96 97 98 def trovaNuovaPosPerCasella(self, codCasella, oldPos):99 #Estrae una nuova posizione. Se in quella posizione non c'è nessun'altro effetto allora va bene, sennò tira di 100 newPos = oldPos101 while (newPos in self.dictCaselle.keys() or newPos == oldPos):102 if(codCasella == AVANTI_DI_QUATTRO[0]):103 #se ci fosse un +4 in posizione 38 si creerebbe un loop104 newPos = random.randint(2, (QTA_CASELLE_TOTALI - 3))105 elif(codCasella == INDIETRO_DI_TRE[0]):106 #se ci fosse un -3 in posizione 1/2/3 "uscirebbe" dal percorso107 newPos = random.randint(4, (QTA_CASELLE_TOTALI - 2))108 else:109 newPos = random.randint(2, (QTA_CASELLE_TOTALI - 2))110 111 self.dictCaselle[newPos] = codCasella112 113 def controllaQtaCaselleVicino(self):114 #In questo metodo vado a "spezzare" le catene di caselle con effetti.115 #Se c'è una catena di 4 caselle con effetti allora prende 1 di quei116 # effetti e lo sposta da un altra parte117 caselleVicino = True118 while(caselleVicino):119 caselleVicino = False120 121 for i in range(0, QTA_CASELLE_TOTALI-1):122 if(i != 0):123 if(self.controllaSeCasellaNonEVuota((i, i+1, i+2, i+3))):124 casDaTogliere = random.randint(0, 3)125 codCasellaDaTogliere = self.dictCaselle[i+casDaTogliere]126 self.dictCaselle.pop(i+casDaTogliere)127 self.trovaNuovaPosPerCasella(codCasellaDaTogliere, (i+casDaTogliere))128 129 self.controllaPossibiliLoop()130 131 caselleVicino = True132 i = QTA_CASELLE_TOTALI133 def controllaPossibiliLoop(self):134 loopTrovato = True135 while(loopTrovato):136 loopTrovato = False137 138 for (pos, codCasella) in self.dictCaselle.items():139 loopTrovato = self.possibileLoop(pos, codCasella)140 if(loopTrovato):141 #Ferma xke deve ricominciare da capo (per corregere un loop che potrebbe142 # essersi creato)143 break144 else:145 loopTrovato = self.controllaLoopSfigato(pos)146 if (loopTrovato):147 #Ferma xke deve ricominciare da capo (per corregere un loop che potrebbe148 # essersi creato)149 break150 151 152 def controllaLoopSfigato(self, pos):153 #Effetti caselle: +4 +1 +1 -3 -1 -1154 155 loop = False156 if(self.controllaSeCasellaNonEVuota((pos-1, pos-2, pos+1, pos+2, pos+3, pos+4))):157 if(self.dictCaselle[pos] == AVANTI_DI_QUATTRO[0]158 and self.dictCaselle[pos-1] == AVANTI_DI_UNO[0]159 and self.dictCaselle[pos-2] == AVANTI_DI_UNO[0]160 and self.dictCaselle[pos+1] == INDIETRO_DI_TRE[0]161 and self.dictCaselle[pos+2] == INDIETRO_DI_UNO[0]162 and self.dictCaselle[pos+3] == INDIETRO_DI_UNO[0]163 and self.dictCaselle[pos+4] == INDIETRO_DI_UNO[0]):164 self.dictCaselle.pop(pos)165 self.dictCaselle.pop(pos-1)166 self.dictCaselle.pop(pos-2)167 self.dictCaselle.pop(pos+1)168 self.dictCaselle.pop(pos+2)169 self.dictCaselle.pop(pos+3)170 self.dictCaselle.pop(pos+4)171 self.trovaNuovaPosPerCasella(AVANTI_DI_QUATTRO[0], pos)172 self.trovaNuovaPosPerCasella(AVANTI_DI_UNO[0], (pos-1))173 self.trovaNuovaPosPerCasella(AVANTI_DI_UNO[0], (pos-2))174 self.trovaNuovaPosPerCasella(INDIETRO_DI_TRE[0], (pos+1))175 self.trovaNuovaPosPerCasella(INDIETRO_DI_UNO[0], (pos+2))176 self.trovaNuovaPosPerCasella(INDIETRO_DI_UNO[0], (pos+3))177 self.trovaNuovaPosPerCasella(INDIETRO_DI_UNO[0], (pos+4))178 179 loop = True180 return loop181 def possibileLoop(self, pos, codCasella):182 loop = False183 if(codCasella == AVANTI_DI_QUATTRO[0]):184 185 if(self.controllaSeCasellaNonEVuota((pos+1, pos+4)) and186 self.dictCaselle[pos+1] == INDIETRO_DI_UNO[0]187 and self.dictCaselle[pos+4] == INDIETRO_DI_TRE[0]):188 189 #+4 -1 x x -3190 # inverto casella +4 con -1191 #-1 +4 x x -3192 193 self.dictCaselle[pos] = INDIETRO_DI_UNO[0]194 self.dictCaselle[pos + 1] = AVANTI_DI_QUATTRO[0]195 loop = True196 197 elif(self.controllaSeCasellaNonEVuota((pos-1, pos+1, pos+3, pos+4))198 and self.dictCaselle[pos-1] == AVANTI_DI_UNO[0]199 and self.dictCaselle[pos+3] == INDIETRO_DI_TRE[0]200 and self.dictCaselle[pos+4] == INDIETRO_DI_UNO[0]):201 202 #+1 +4 x x -3 -1203 # inverto casella +4 con -3204 #+1 -3 x x +4 -1205 206 self.dictCaselle[pos] = INDIETRO_DI_TRE[0]207 self.dictCaselle[pos+3] = AVANTI_DI_QUATTRO[0]208 loop = True209 210 elif(self.controllaSeCasellaNonEVuota((pos+3, pos+4)) and211 self.dictCaselle[pos+3] == INDIETRO_DI_TRE[0]212 and self.dictCaselle[pos+4] == INDIETRO_DI_UNO[0]):213 214 #+4 x x -3 -1215 # inverto casella +4 con -1216 #-1 x x -3 +4217 218 self.dictCaselle[pos] = INDIETRO_DI_UNO[0]219 self.dictCaselle[pos + 4] = AVANTI_DI_QUATTRO[0]220 loop = True221 222 elif(self.controllaSeCasellaNonEVuota((pos+3, pos+4))223 and (self.dictCaselle.get(pos+3) == AVANTI_DI_UNO[0])224 and (self.dictCaselle.get(pos+4) == INDIETRO_DI_TRE[0]) ):225 #+4 x x +1 -3226 #inverto casella +4 con +1227 #+1 x x +4 -3228 self.dictCaselle[pos] = AVANTI_DI_UNO[0]229 self.dictCaselle[pos+3] = AVANTI_DI_QUATTRO[0]230 loop = True231 232 233 elif(codCasella == AVANTI_DI_UNO[0]):234 235 if(self.controllaSeCasellaNonEVuota((pos+1,)) and236 self.dictCaselle[pos+1] == INDIETRO_DI_UNO[0]):237 238 #+1 -1239 # inverto casella +1 con -1240 #-1 +1241 242 self.dictCaselle[pos] = INDIETRO_DI_UNO[0]243 self.dictCaselle[pos + 1] = AVANTI_DI_UNO[0]244 loop = True245 246 elif(self.controllaSeCasellaNonEVuota((pos+1, pos+2, pos+3)) and247 self.dictCaselle[pos+1] == AVANTI_DI_UNO[0]248 and self.dictCaselle[pos+2] == AVANTI_DI_UNO[0]249 and self.dictCaselle[pos+3] == INDIETRO_DI_TRE[0]):250 251 #+1 +1 +1 -3252 253 if(pos > 3):254 # inverto casella primo +1 con -3255 #-3 +1 +1 +1256 257 self.dictCaselle[pos] = INDIETRO_DI_TRE[0]258 self.dictCaselle[pos + 3] = AVANTI_DI_UNO[0]259 else:260 #se invertissi finirebbe un -3 nelle prime caselle,261 # e se ci si finisse sopra si dovrebbe "andare fuori dal percorso"262 # quindi metto il -3 in una posizione casuale (in cui non ce nulla)263 #+1 +1 +1 x264 self.dictCaselle.pop(pos+3)265 self.trovaNuovaPosPerCasella(INDIETRO_DI_TRE[0])266 267 loop = True268 return loop269 270 271 def controllaSeCasellaNonEVuota(self, caselleDaControllare):272 #Se nell'if di controllo del loop provasse a prendere una casella non presente nel dizionario273 # lancerebbe una eccezione. Io potrei mettere un grande try except che CONTIENE tutti gli if274 # ma in questo modo "bloccherei" la possibilita' di andare negli if successivi275 276 for casella in caselleDaControllare:277 try:278 x = self.dictCaselle[casella]279 except KeyError:280 return False281 return True282 283 def contaEffettiSettati(self, codEffetto=-1):284 #Prende i valori del dizionario e usa il metodo ".count" delle liste285 # per contare le occorenze di un certo valore286 tot = 0287 if(codEffetto == -1):288 tot += list(self.dictCaselle.values()).count(TIRA_DI_NUOVO[0])289 tot += list(self.dictCaselle.values()).count(INDIETRO_DI_UNO[0])290 tot += list(self.dictCaselle.values()).count(INDIETRO_DI_TRE[0])291 tot += list(self.dictCaselle.values()).count(AVANTI_DI_UNO[0])292 tot += list(self.dictCaselle.values()).count(AVANTI_DI_QUATTRO[0])293 tot += list(self.dictCaselle.values()).count(FERMO_DA_UNO[0])294 tot += list(self.dictCaselle.values()).count(FERMO_DA_DUE[0])295 else:296 tot = list(self.dictCaselle.values()).count(codEffetto)297 ...

Full Screen

Full Screen

lettura dati emotiv e scrittura su csv.py

Source:lettura dati emotiv e scrittura su csv.py Github

copy

Full Screen

1from pyemotiv import Epoc2import time3import numpy as np4import keyboard5import csv6esc = False7with open("avanti.csv", "wb") as csvavanti:8 avanti = csv.writer(csvavanti)9 with open("indietro.csv" , "wb") as csvindietro:10 indietro = csv.writer(csvindietro)11 time_passed = 0.012 epoc = Epoc()13 while not esc:14 data = epoc.get_raw()15 if(keyboard.is_pressed('q')):16 esc = True17 if(keyboard.is_pressed('a')):18 print "INVIO AVANTI"19 avanti.writerow([str(time_passed) , 'af3, ' , str(np.average(data[0]))])20 avanti.writerow([str(time_passed) , 'f7, ' , str(np.average(data[1]))])21 avanti.writerow([str(time_passed) , 'f3, ' , str(np.average(data[2]))])22 avanti.writerow([str(time_passed) , 'fc5, ' , str(np.average(data[3]))])23 avanti.writerow([str(time_passed) , 't7, ' , str(np.average(data[4]))])24 avanti.writerow([str(time_passed) , 'p7, ' , str(np.average(data[5]))])25 avanti.writerow([str(time_passed) , 'o1, ' , str(np.average(data[6]))])26 avanti.writerow([str(time_passed) , 'o2, ' , str(np.average(data[7]))])27 avanti.writerow([str(time_passed) , 'p8, ' , str(np.average(data[8]))])28 avanti.writerow([str(time_passed) , 't8, ' , str(np.average(data[9]))])29 avanti.writerow([str(time_passed) , 'fc6, ' , str(np.average(data[10]))])30 avanti.writerow([str(time_passed) , 'f4, ' , str(np.average(data[11]))])31 avanti.writerow([str(time_passed) , 'f8, ' , str(np.average(data[12]))])32 avanti.writerow([str(time_passed) , 'af4, ' , str(np.average(data[13]))])33 if(keyboard.is_pressed('z')):34 print "INVIO INDIETRO"35 indietro.writerow([str(time_passed) , 'af3, ' , str(np.average(data[0]))])36 indietro.writerow([str(time_passed) , 'f7, ' , str(np.average(data[1]))])37 indietro.writerow([str(time_passed) , 'f3, ' , str(np.average(data[2]))])38 indietro.writerow([str(time_passed) , 'fc5, ' , str(np.average(data[3]))])39 indietro.writerow([str(time_passed) , 't7, ' , str(np.average(data[4]))])40 indietro.writerow([str(time_passed) , 'p7, ' , str(np.average(data[5]))])41 indietro.writerow([str(time_passed) , 'o1, ' , str(np.average(data[6]))])42 indietro.writerow([str(time_passed) , 'o2, ' , str(np.average(data[7]))])43 indietro.writerow([str(time_passed) , 'p8, ' , str(np.average(data[8]))])44 indietro.writerow([str(time_passed) , 't8, ' , str(np.average(data[9]))])45 indietro.writerow([str(time_passed) , 'fc6, ' , str(np.average(data[10]))])46 indietro.writerow([str(time_passed) , 'f4, ' , str(np.average(data[11]))])47 indietro.writerow([str(time_passed) , 'f8, ' , str(np.average(data[12]))])48 indietro.writerow([str(time_passed) , 'af4, ' , str(np.average(data[13]))])49 time.sleep(1./2048.)...

Full Screen

Full Screen

python_pwm_motor_test.py

Source:python_pwm_motor_test.py Github

copy

Full Screen

...19 GPIO.output(self.pin_EN,GPIO.HIGH) 20 def avanti(self, speed): # Funzione avanti 21 self.pwm_indietro.ChangeDutyCycle(0)22 self.pwm_avanti.ChangeDutyCycle(speed) 23 def indietro(self, speed): # Funzione indietro 24 self.pwm_avanti.ChangeDutyCycle(0)25 self.pwm_indietro.ChangeDutyCycle(speed)26 def stop(self): # Funzione stop27 self.pwm_avanti.ChangeDutyCycle(0)28 self.pwm_indietro.ChangeDutyCycle(0)29motor1 = Motor(17, 4, 18) # istanza del motore 130motor2 = Motor(24, 9, 8) # istanza del motore 231print ("Test accelerazione")32for vel in range (20,100):33 motor1.avanti(vel)34 motor2.indietro(vel)35 sleep(0.2)36motor1.stop()37motor2.stop()38for vel in range (20,100):39 motor1.indietro(vel)40 motor2.avanti(vel)41 sleep(0.2)42motor1.stop()43motor2.stop()44print ("Test 1")45motor1.avanti(50)46motor2.indietro(70)47sleep(4)48print ("Test 2")49motor1.indietro(70)50motor2.avanti(50)51sleep(4)52print ("Test 3")53motor1.avanti(30)54motor2.avanti(30)55sleep(4)56print ("Test 4")57motor1.indietro(100)58motor2.indietro(100)59sleep(4)60print ("STOP")61motor1.stop()62motor2.stop()...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run SeleniumBase automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful