How to use espera method in SeleniumBase

Best Python code snippet using SeleniumBase

A01021720SeungP1.py

Source:A01021720SeungP1.py Github

copy

Full Screen

1# Seung Hoon Lee Kim2# A010217203# Hecho en python34# Librerías utilizadas: random5# Librerías utilizadas: math6# Librerías utilizadas: statistics7# Correr asi: python3 A01021720SeungP1.py8import random9import numpy10import math11import statistics12# timer utilizado para medir los minutos entre llamadas13timeout = 014enEspera = []15enEsperaHistorico = []16# retorna una duración aleatoria de una llamada17def getDuracion():18 # obtener nueva llamada19 probDuracion = random.uniform(0, 1)20 # Sacamos los minutos de la duracion dependiendo de la tabla21 minutos = 722 if probDuracion < 0.97:23 minutos = 624 if probDuracion < 0.87:25 minutos = 526 if probDuracion < 0.64:27 minutos = 428 if probDuracion < 0.57:29 minutos = 330 if probDuracion < 0.39:31 minutos = 232 if probDuracion < 0.20:33 minutos = 134 35 return minutos36# A. 1 operador asumiendo la distribución actual37# 0. inicializa el arreglo de minutos restantes con ceros, ya que ambos operadores están listos para atender clientes38minutosRestantes = 039# simular 360 minutos de operación (de 12AM a 6AM son seis horas, 6*60 = 360)40for minuto in range(360):41 # print("----------------")42 # print("M:", minuto)43 # 1. RESTAR/SUMAR TIEMPOS44 # sumar minutos a llamadas en espera45 if len(enEspera) > 0:46 enEspera = [x+1 for x in enEspera]47 #print("oh:", len(enEspera), enEspera)48 # restar minutos del agente en la línea49 if minutosRestantes > 0:50 minutosRestantes -= 151 # print("mr:", minutosRestantes)52 53 # si estamos en un timeout entre llamadas... restar minuto del timeout entre llamadas entrantes54 if timeout > 0:55 timeout -= 156 # print("t:", timeout)57 # 2. CHECAR SI HAY ALGUIEN ON HOLD58 if len(enEspera) > 0:59 if minutosRestantes == 0: # el agente está disponible60 61 # para fines de estadística62 enEsperaHistorico.append(enEspera.pop(0))63 # duración de la llamada64 minutosRestantes = getDuracion()65 #print("Se tomó una llamada de", minutosRestantes, "minutos que estaba on hold")66 67 # 3. CHECAR SI TOCA LA ENTRADA DE UNA NUEVA LLAMADA68 if timeout == 0:69 probLlamada = random.uniform(0, 1)70 71 # asumimos que entrará una llamada en 6 minutos72 minutos = 673 if probLlamada < 0.90:74 minutos = 575 if probLlamada < 0.74:76 minutos = 477 if probLlamada < 0.54:78 minutos = 379 if probLlamada < 0.32:80 minutos = 281 if probLlamada < 0.11:82 minutos = 183 # set del nuevo timeout84 timeout = minutos85 # checar si podemos atender la llamada que acaba de entrar86 if minutosRestantes == 0: # el agente está disponible87 88 # para fines de estadística89 enEsperaHistorico.append(0)90 # asignar duración de la llamada91 minutosRestantes = getDuracion()92 #print("Se tomó una llamada de", minutosRestantes, "minutos")93 else:94 # no hay, poner en espera95 enEspera.append(0)96print("\n\nResultados con 1 agente bajo condiciones normales:")97onHoldHistoricoSinCeros = [x for x in enEsperaHistorico if x != 0]98if len(onHoldHistoricoSinCeros) > 0:99 print("Tiempo promedio de espera:", round(statistics.mean(onHoldHistoricoSinCeros), 2), "minutos")100else:101 print("No hubo clientes en espera")102onHoldHistoricoSoloCeros = [1 for x in enEsperaHistorico if x == 0]103print("Total de clientes que fueron atendidos sin tener que esperar:", sum(onHoldHistoricoSoloCeros))104# ******************************************************************************************************************105# timer utilizado para medir los minutos entre llamadas106timeout = 0107enEspera = []108enEsperaHistorico = []109# A. 1 operador asumiendo la distribución actual110# 0. inicializa el arreglo de minutos restantes con ceros, ya que ambos operadores están listos para atender clientes111minutosRestantesOp1 = 0112minutosRestantesOp2 = 0113# simular 360 minutos de operación (de 12AM a 6AM son seis horas, 6*60 = 360)114for minuto in range(360):115 # print("----------------")116 # print("M:", minuto)117 # 1. RESTAR/SUMAR TIEMPOS118 # sumar minutos a llamadas en espera119 if len(enEspera) > 0:120 enEspera = [x+1 for x in enEspera]121 #print("oh:", len(enEspera), enEspera)122 # restar minutos de los agentes en la línea123 if minutosRestantesOp1 > 0:124 minutosRestantesOp1 -= 1125 if minutosRestantesOp2 > 0:126 minutosRestantesOp2 -= 1127 # print("mr:", minutosRestantesOp1)128 129 # si estamos en un timeout entre llamadas... restar minuto del timeout entre llamadas entrantes130 if timeout > 0:131 timeout -= 1132 # print("t:", timeout)133 # 2. CHECAR SI HAY ALGUIEN ON HOLD134 if len(enEspera) > 0:135 if minutosRestantesOp1 == 0: # el agente está disponible136 137 # para fines de estadística138 enEsperaHistorico.append(enEspera.pop(0))139 # duración de la llamada140 minutosRestantesOp1 = getDuracion()141 #print("El operador 1 tomó una llamada de", minutosRestantesOp1, "minutos que estaba on hold")142 143 elif minutosRestantesOp2 == 0:144 145 # para fines de estadística146 enEsperaHistorico.append(enEspera.pop(0))147 # duración de la llamada148 minutosRestantesOp1 = getDuracion()149 #print("El operador 2 tomó una llamada de", minutosRestantesOp2, "minutos que estaba on hold")150 151 # 3. CHECAR SI TOCA LA ENTRADA DE UNA NUEVA LLAMADA152 if timeout == 0:153 probLlamada = random.uniform(0, 1)154 155 # asumimos que entrará una llamada en 6 minutos156 minutos = 6157 if probLlamada < 0.93:158 minutos = 5159 if probLlamada < 0.81:160 minutos = 4161 if probLlamada < 0.66:162 minutos = 3163 if probLlamada < 0.47:164 minutos = 2165 if probLlamada < 0.22:166 minutos = 1167 # set del nuevo timeout168 timeout = minutos169 # checar si podemos atender la llamada que acaba de entrar170 if minutosRestantesOp1 == 0: # el agente 1 está disponible171 172 # para fines de estadística173 enEsperaHistorico.append(0)174 # asignar duración de la llamada175 minutosRestantesOp1 = getDuracion()176 #print("El operador 1 tomó una llamada de", minutosRestantesOp1, "minutos")177 178 elif minutosRestantesOp2 == 0: # el agente 2 está disponible179 180 # para fines de estadística181 enEsperaHistorico.append(0)182 # asignar duración de la llamada183 minutosRestantesOp2 = getDuracion()184 #print("El operador 2 tomó una llamada de", minutosRestantesOp2, "minutos")185 else:186 # no hay, poner en espera187 enEspera.append(0)188print("\n\n-------------------------------------")189print("Resultados con 2 agentes y asumiendo la campaña publicitaria:")190onHoldHistoricoSinCeros = [x for x in enEsperaHistorico if x != 0]191if len(onHoldHistoricoSinCeros) > 0:192 print("Tiempo promedio de espera:", round(statistics.mean(onHoldHistoricoSinCeros), 2), "minutos")193else:194 print("No hubo clientes en espera")195onHoldHistoricoSoloCeros = [1 for x in enEsperaHistorico if x == 0]196print("Total de clientes que fueron atendidos sin tener que esperar:", sum(onHoldHistoricoSoloCeros))197print("\n\n-------------------------------------------")198print("El modelo es basicamente una simulacion de 360 minutos (6 Horas para simular entre las 12:00 AM y las 6:00 AM). Durante cada ciclo restamos y sumamos los tiempos necesarios. Despues checamos si ya estaba cualquier cliente en espera mientras el operador este ocupado y en ese mismo ciclo tambien checamos si llega algun otro cliente que se conecte y se meta al queue de esepra. Como se puede ver en la primera simulacion el promedio de espera es bastante alto (de 20 minutos). Para poder cortar el tiempo de espera seria mejor si se implementan a varios agentes para atender a los clientes. Esto se puede ver en base a lo que paso en la segunda simulacion con dos agentes, se puede acortar el tiempo y el total de clientes atendidos sin espera es mucho mas alto.")199print("25 Puntos")200print("\n\n-------------------------------------------")201print("Es bastante necesario que se utilize la campaña de publicidad ya que a traves de la simulacion se pudo ver que se atendieron mas de 100 clientes sin espera a comparacion de 1 cliente sin espera. La satisfaccion del cliente seria mucho mas alta y por ende se podrian atraer a muchos mas clientes. Mi recomendacion seria personalmente que si se haga la campana ya que podria ademas atraer a mas clientes.")...

Full Screen

Full Screen

bufferPacotes.py

Source:bufferPacotes.py Github

copy

Full Screen

1import threading2import time3from pacote import Pacote4class BufferPacotes():5 ## Limitações6 quantidadePacotesPermitido = 07 tamanhoPacote = 08 tamanhoBufferPermitido = 09 ## Informações relevantes para a classe10 ultimoPacoteCriado = -111 pacotes = {}12 pacotesEspera = {}13 dados = bytes()14 ## Estatísticas15 erros = []16 tempoEspera = 017 pacotesEnviados = 018 tempoMedioEnvio = 019 taxaBitsS = 020 taxaPacotesS = 021 tempoTotal = 022 totalBits = 023 inicio = 024 ## Variáveis auxiliares de threading25 mutexDados = threading.Lock()26 mutexPacotes = threading.Lock()27 mutexPacotesEspera = threading.Lock()28 def __init__(self, tamanhoPacote, quantidadeMaximaPacotes, tamanhoBuffer, tempoEsperaMaximo) -> None:29 self.tamanhoPacote = tamanhoPacote30 self.quantidadePacotesPermitido = quantidadeMaximaPacotes31 self.tamanhoBufferPermitido = tamanhoBuffer32 self.tempoEspera = tempoEsperaMaximo33 def __modificarDados(self, inserir = False):34 dados = bytes()35 self.mutexDados.acquire()36 try:37 if not inserir:38 dados = self.dados39 self.dados = bytes()40 else:41 self.dados = bytes().join([self.dados, inserir])42 except:43 print("Não foi possível modificar os dados.")44 finally:45 self.mutexDados.release()46 return dados47 def __modificarPacotes(self, chave, inserir = False):48 self.mutexPacotes.acquire()49 try:50 if not inserir:51 pacote = self.pacotes.pop(chave)52 else:53 pacote = {54 "pacote": inserir,55 "momentoEnviado": 056 }57 self.pacotes[chave] = pacote58 except:59 print("Não foi possível modificar os pacotes.")60 pacote = False61 finally:62 self.mutexPacotes.release()63 return pacote64 def iniciar(self):65 self.inicio = time.time()66 def criarPacotes(self):67 dados = self.__modificarDados()68 tamanhoPacotePermitido = Pacote(-1, self.tamanhoPacote).obterTamanhoDadosPermitido()69 for i in range(0, len(dados), tamanhoPacotePermitido):70 inicio = time.time()71 agora = time.time()72 while (agora - inicio) < 5:73 if len(self.pacotes) < self.quantidadePacotesPermitido:74 break75 agora = time.time()76 if (agora - inicio) >= 5:77 break78 pacote = Pacote(self.ultimoPacoteCriado+1, self.tamanhoPacote)79 pacote.inserirDados(self.dados[i:(i + tamanhoPacotePermitido)])80 self.ultimoPacoteCriado += 181 self.__modificarPacotes(self.ultimoPacoteCriado, pacote.montar())82 def __modificarPacotesEspera(self, chave = 0, inserir = False):83 pacote = bytes()84 self.mutexPacotesEspera.acquire()85 try:86 if not inserir:87 pacote = self.pacotesEspera.pop(chave)88 else:89 self.pacotesEspera[chave] = inserir90 except:91 print("O pacote já foi enviado.")92 pacote = False93 finally:94 self.mutexPacotesEspera.release()95 return pacote96 def obterPacote(self):97 erroEnvio = False98 try:99 if len(self.pacotesEspera) > 0:100 numero = list(self.pacotesEspera)[0]101 if (time.time() - self.pacotesEspera[numero]["momentoEnviado"]) > self.tempoEspera:102 erroEnvio = True103 if erroEnvio:104 pacote = self.__modificarPacotesEspera(numero)105 if pacote:106 agora = time.time()107 pacote["momentoEnviado"] = agora108 self.__modificarPacotesEspera(numero, pacote)109 self.erros.append(numero)110 else:111 return False112 else:113 numero = list(self.pacotes)[0]114 pacote = self.__modificarPacotes(numero)115 agora = time.time()116 pacote["momentoEnviado"] = agora117 self.__modificarPacotesEspera(numero, pacote)118 return pacote["pacote"]119 except:120 print("Nenhum pacote foi obtido")121 return False122 def inserirDados(self, dados):123 inicio = time.time()124 agora = time.time()125 while (agora - inicio) < 5:126 if (len(self.dados) + len(dados)) < self.tamanhoBufferPermitido:127 self.__modificarDados(dados)128 break129 agora = time.time()130 def confirmarTransmissao(self, chave):131 self.__modificarPacotesEspera(chave)132 self.pacotesEnviados += 1133 def obterTaxaPacotesSegundo(self):134 return self.taxaPacotesS135 def obterTaxaBitsSegundo(self):136 return self.taxaBitsS137 def obterTotalBits(self):138 self.totalBits = self.taxaBitsS * self.tempoTotal139 return self.totalBits140 def obterTempoTotal(self):141 return self.tempoTotal142 143 def encerrar(self):144 agora = time.time()145 self.tempoTotal = agora - self.inicio146 self.taxaPacotesS = self.pacotesEnviados / self.tempoTotal...

Full Screen

Full Screen

sjf.py

Source:sjf.py Github

copy

Full Screen

1from operator import itemgetter2def tempo_espera(processos):3 # definindo a qnt. tempo de servico baseado na qnt de processos4 tempo_servico = [0] * len(processos)5 # definindo tamanho da lista de espera6 tempoEspera = [0] * len(processos)7 for x in range(1, len(processos)):8 tempo_servico[x] = (tempo_servico[x-1] + processos[x-1][2])9 tempoEspera[x] = tempo_servico[x] - processos[x][1]10 if (tempoEspera[x] < 0):11 tempoEspera[x] = 012 return tempoEspera13def tempo_resposta(processos):14 # turnaround time = burstTime + waitingTime15 tempoResposta = [0] * len(processos)16 tempoEspera = tempo_espera(processos)17 for x in range(len(processos)):18 tempoResposta[x] = processos[x][2] + tempoEspera[x]19 return tempoResposta20def execucao_media(processos):21 tempoResposta = sum(tempo_resposta(processos))22 # Retornando o tempo medio 23 return (tempoResposta/len(processos))24def espera_media(processos):25 tempoEspera = sum(tempo_espera(processos))26 return (tempoEspera / len(processos))27def SJF(processos):28 # Ordenando por tempo de duraçao mais curto29 processos.sort(key=itemgetter(2))30 return processos31######################################################################32# quantidade de testes feitos33quant = 034while(True):35 print(":::::::::::::::::::::::::::::::::::SJF:::::::::::::::::::::::::::::::::::")36 processos = []37 N = int(input("Quantidade de processos: "))38 if(N == 0):39 break40 for x in range(1, N + 1):41 pid = f"P{x}"42 X = int(input("Tempo de Chegada: "))43 Y = int(input("Tempo de Duracao: "))44 processos.append([pid, X, Y])45 print("\n------------------------------------\n")46 #processos = SJF(processos)47 tempoEspera = tempo_espera(processos)48 tempoResposta = tempo_resposta(processos)49 execucaoMedia = execucao_media(processos)50 esperaMedia = espera_media(processos)51 52 print(processos)53 quant += 154 print(f"\nTeste {quant}")55 print(f"Tempo médio de execucao: {execucaoMedia}s")56 print(f"Tempo Médio de Espera: {esperaMedia}s")57 for proc in range(len(processos)):...

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