Best Python code snippet using SeleniumBase
grafo.py
Source:grafo.py
...19 def insertar_arista(self, peso, origen, destino, criterio='destino', data=None): # ! agregar otro20 ver_origen = self.inicio.busqueda(origen, 'info')21 ver_destino = self.inicio.busqueda(destino, 'info')22 if(ver_origen != -1 and ver_destino != -1):23 self.inicio.obtener_elemento(ver_origen)['aristas'].insertar({'peso': peso, 'destino': destino, 'data': data}, criterio)24 if(not self.dirigido and origen != destino):25 data_aux = deepcopy(data)26 if(data):27 data_aux['relacion'].reverse()28 self.inicio.obtener_elemento(ver_destino)['aristas'].insertar({'peso': peso, 'destino': origen, 'data': data_aux}, criterio)29 else:30 print('los vertices origen o destino no estan en el grafo....', origen, destino)3132 def grafo_vacio(self):33 return self.inicio.lista_vacia()3435 def tamanio(self):36 return self.inicio.tamanio()37 38 def buscar_vertice(self, clave, criterio='info'):39 return self.inicio.busqueda(clave, criterio=criterio)4041 def buscar_arista(self, origen, destino, criterio='destino'):42 ver_origen = self.inicio.busqueda(origen, 'info')43 if(ver_origen != -1):44 return self.inicio.obtener_elemento(ver_origen)['aristas'].busqueda(destino, criterio)45 else:46 return ver_origen4748 def barrido_vertices(self):49 self.inicio.barrido()5051 def es_adyacente(self, origen, destino):52 """Relacion directa"""53 ver_origen = self.inicio.busqueda(origen, 'info')54 if(ver_origen != -1):55 destino = self.buscar_arista(origen, destino)56 if(destino != -1):57 return True58 else:59 return False60 else:61 return False6263 def adyacentes(self, origen):64 ver_origen = self.inicio.busqueda(origen, 'info')65 if(ver_origen != -1):66 self.inicio.obtener_elemento(ver_origen)['aristas'].barrido()67 68 def adyacentes_antecesores(self, origen):69 ver_origen = self.inicio.busqueda(origen, 'info')70 if(ver_origen != -1):71 self.inicio.obtener_elemento(ver_origen)['aristas'].barrido()7273 def eliminar_vertice(self, clave):74 aux = self.inicio.eliminar(clave, criterio='info')75 for posicion in range(self.tamanio()):76 origen = self.inicio.obtener_elemento(posicion)['info']77 self.eliminar_arista(origen, clave)78 return aux798081 def eliminar_arista(self, origen, destino):82 ver_origen = self.inicio.busqueda(origen, 'info')83 if(ver_origen != -1):84 self.inicio.obtener_elemento(ver_origen)['aristas'].eliminar(destino, 'destino')85 if(not self.dirigido):86 ver_destino = self.inicio.busqueda(destino, 'info')87 if(ver_destino != -1):88 self.inicio.obtener_elemento(ver_destino)['aristas'].eliminar(origen, 'destino')8990 91 def barrido_profundidad(self, ver_origen):92 """Barrido en profundidad del grafo."""93 while(ver_origen < self.inicio.tamanio()):94 vertice = self.inicio.obtener_elemento(ver_origen)95 if(not vertice['visitado']):96 vertice['visitado'] = True97 print(vertice['info'])98 aristas = 099 while(aristas < vertice['aristas'].tamanio()):100 arista = vertice['aristas'].obtener_elemento(aristas)101 pos_vertice = self.buscar_vertice(arista['destino'])102 nuevo_vertice = self.inicio.obtener_elemento(pos_vertice)103 if(not nuevo_vertice['visitado']):104 self.barrido_profundidad(pos_vertice)105 aristas += 1106 ver_origen += 1107108 def barrido_amplitud(self, ver_origen):109 """Barrido en amplitud del grafo."""110 cola = Cola()111 while(ver_origen < self.tamanio()):112 vertice = self.inicio.obtener_elemento(ver_origen)113 if(not vertice['visitado']):114 vertice['visitado'] = True115 cola.arribo(vertice)116 while(not cola.cola_vacia()):117 nodo = cola.atencion()118 print(nodo['info'], nodo['data'])119 aristas = 0120 while(aristas < nodo['aristas'].tamanio()):121 adyacente = nodo['aristas'].obtener_elemento(aristas)122 pos_vertice = self.buscar_vertice(adyacente['destino'])123 nuevo_vertice = self.inicio.obtener_elemento(pos_vertice)124 if(not nuevo_vertice['visitado']):125 nuevo_vertice['visitado'] = True126 cola.arribo(nuevo_vertice)127 aristas += 1128 ver_origen += 1129130131 def marcar_no_visitado(self):132 """Marca todos losvertices del grafo como no visitados."""133 for i in range(self.tamanio()):134 self.inicio.obtener_elemento(i)['visitado'] = False135136 def existe_paso(self, ver_origen, ver_destino):137 """Barrido en profundidad del grafo."""138 resultado = False139 vertice = self.inicio.obtener_elemento(ver_origen)140 if(not vertice['visitado']):141 vertice['visitado'] = True142 aristas = 0143 while(aristas < vertice['aristas'].tamanio() and not resultado):144 arista = vertice['aristas'].obtener_elemento(aristas)145 pos_vertice = self.buscar_vertice(arista['destino'])146 nuevo_vertice = self.inicio.obtener_elemento(pos_vertice)147 destino = self.inicio.obtener_elemento(ver_destino)148 if(nuevo_vertice['info'] == destino['info']):149 return True150 else:151 resultado = self.existe_paso(pos_vertice, ver_destino)152 aristas += 1153 return resultado154155 def dijkstra(self, ver_origen, ver_destino):156 """Algoritmo de Dijkstra para hallar el camino mas corto."""157 no_visitados = HeapMin()158 camino = Pila()159 aux = 0160 while(aux < self.tamanio()):161 vertice = self.inicio.obtener_elemento(ver_origen)162 vertice_aux = self.inicio.obtener_elemento(aux)163 vertice_aux['anterior'] = None164 if(vertice_aux['info'] == vertice['info']):165 no_visitados.arribo([vertice_aux['info'], None], 0)166 else:167 no_visitados.arribo([vertice_aux['info'], None], inf)168 aux += 1169 while(not no_visitados.vacio()):170 dato = no_visitados.atencion()171 camino.apilar(dato)172 pos_aux = self.buscar_vertice(dato[1][0])173 vertice_aux = self.inicio.obtener_elemento(pos_aux)174 aristas = 0175 while(aristas < vertice_aux['aristas'].tamanio()):176 arista = vertice_aux['aristas'].obtener_elemento(aristas)177 pos_heap = no_visitados.busqueda(arista['destino'])178 if(pos_heap is not None and no_visitados.elementos[pos_heap][0] > dato[0] + arista['peso']):179 no_visitados.elementos[pos_heap][1][1] = dato[1][0]180 nuevo_peso = dato[0] + arista['peso']181 no_visitados.cambiar_prioridad(pos_heap, nuevo_peso)182 aristas += 1183 # print(no_visitados.elementos)184 return camino185186 def busqueda_prim(self, bosque, buscado):187 for elemento in bosque:188 if(buscado in elemento[1]):189 return elemento190191192 def prim(self):193 """Algoritmo de Prim para hallar el árbol de expansión mÃnimo."""194 bosque = []195 aristas = HeapMin()196 origen = self.inicio.obtener_elemento(0)197 adyac = 0198 while(adyac < origen['aristas'].tamanio()):199 arista = origen['aristas'].obtener_elemento(adyac)200 aristas.arribo([origen['info'], arista['destino']], arista['peso'])201 adyac += 1202 # print(bosque)203 # print(aristas.elementos)204 # print()205 while(len(bosque) // 2 < self.tamanio() and not aristas.vacio()):206 dato = aristas.atencion()207 if(len(bosque) == 0) or ((self.busqueda_prim(bosque, dato[1][0]) is not None) ^ (self.busqueda_prim(bosque, dato[1][1]) is not None)):208 bosque.append(dato)209 pos_vertice = self.buscar_vertice(dato[1][1])210 nuevo_vertice = self.inicio.obtener_elemento(pos_vertice)211 adyac = 0212 while(adyac < nuevo_vertice['aristas'].tamanio()):213 arista = nuevo_vertice['aristas'].obtener_elemento(adyac)214 # print(arista)215 aristas.arribo([nuevo_vertice['info'], arista['destino']], arista['peso'])216 adyac += 1217 # print(bosque)218 # print(aristas.elementos)219 # a = input()220 return bosque221222 def relaciones(self, clave,data = None):223 """devuelve relacion especifica"""224 origen = self.buscar_vertice(clave)225 if (origen != -1):226 dios = self.inicio.obtener_elemento(origen)227 for i in range(dios['aristas'].tamanio()):228 arista = dios['aristas'].obtener_elemento(i)229 if(data in arista['data']['relacion'][-1]): 230 print(arista["destino"]) 231 else:232 print('dios no encontrado')233 234 235 def relaciones2(self, clave,data = None, lista = None):236 """devuelve relacion especifica"""237 origen = self.buscar_vertice(clave)238 if (origen != -1):239 dios = self.inicio.obtener_elemento(origen)240 for i in range(dios['aristas'].tamanio()):241 arista = dios['aristas'].obtener_elemento(i)242 if(data in arista['data']['relacion'][-1]): 243 if (not arista["destino"] in lista):244 print(arista["destino"])245 lista.append(arista["destino"]) 246 else:247 print('dios no encontrado')248249 def relaciones_nietos(self, clave,data = None, lista =None):250 """devuelve relacion especifica"""251 origen = self.buscar_vertice(clave)252 if (origen != -1):253 dios = self.inicio.obtener_elemento(origen)254 for i in range(dios['aristas'].tamanio()):255 arista = dios['aristas'].obtener_elemento(i)256 if(data in arista['data']['relacion'][-1]):257 self.relaciones2(arista["destino"],"hijo",lista) 258 else:259 print('dios no encontrado')260261262 def ancestro(self,vertice_nombre):263 """Muestra los ancestros de un determinado dios"""264 origen = self.buscar_vertice(vertice_nombre)265 if(origen != -1):266 dios = self.inicio.obtener_elemento(origen)267 for i in range(dios['aristas'].tamanio()):268 nombre_dios = dios['aristas'].obtener_elemento(i)['destino']269 dios_aux = dios['aristas'].obtener_elemento(i)['data']270 if(len(dios_aux['relacion']) > 1):271 if(dios_aux['relacion'][1] == 'padre' or dios_aux['relacion'][1] == 'madre'):272 print(nombre_dios, dios_aux['relacion'])273 self.ancestro(nombre_dios)274 275 def barrido_dios_madre(self):276 """Barrido que muestra la madre de cada dios"""277 for i in range(self.tamanio()):278 dios = self.inicio.obtener_elemento(i)279 aux = dios['info'] 280 for j in range(dios['aristas'].tamanio()):281 nombre_madre = dios['aristas'].obtener_elemento(j)['destino']282 madre_aux = dios['aristas'].obtener_elemento(j)['data']283 if(len(madre_aux['relacion']) > 1):284 if(madre_aux['relacion'][1] == 'madre' ):
...
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!