def test(self): baseUrl = "https://www.google.com" driver = webdriver.Chrome(r"") driver.maximize_window() driver.implicitly_wait(10) hw = HandyWrappers(driver) driver.get(baseUrl) elementResult1 = hw.isElementPresent(locator="", byType="") print(str(elementResult1)) elementResult2 = hw.elementPresentCheck(locator="", byType="") print(str(elementResult2))
def test(self): baseUrl = "https://letskodeit.teachable.com/pages/practice" driver = webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(10) hw = HandyWrappers(driver) driver.get(baseUrl) elementResult1 = hw.isElementPresent("name", By.ID) print(str(elementResult1)) elementResult2 = hw.elementPresenceCheck("//input[@id='name1']", By.XPATH) print(str(elementResult2))
def test(self): baseUrl = "https://letskodeit.teachable.com/pages/practice" chrome_driver_path = os.path.abspath( '..') + "\\Drivers\\chromedriver.exe" driver = webdriver.Chrome(chrome_driver_path) driver.maximize_window() driver.implicitly_wait(10) hw = HandyWrappers(driver) driver.get(baseUrl) elementResult1 = hw.isElementPresent("name", By.ID) print(str(elementResult1)) elementResult2 = hw.elementPresenceCheck("//input[@id='name1']", By.XPATH) print(str(elementResult2))
def checkInfo(self, modulo='', datos=[]): MONGO_DB = "logDB" coll = 'usuarios' fieldnames = ["modulo", "resultados"] su = SingUp() try: driver = su.startLogin(use=True) except: print("process finished, no driver return") return if driver == None: print("process finished, no driver return") return None print("rediriegiendo a :" + modulo) hw = HandyWrappers(driver) driver.get(modulo) time.sleep(1) print("modulo: " + modulo) tableExists = hw.isElementPresent(byType="xpath", locator="//table") if not tableExists: print("no se encontro ninguna estructura de datos valida") return None encabezadoT = driver.find_element(By.XPATH, "//thead") for dato in datos: try: encabezadoT.find_element(By.XPATH, "//*[text()='" + dato + "']") except: results = "el dato :" + dato + " no se encontró" print(results) data = [{"modulo": modulo, "resultados": results}] su.createCVS(fieldnames=fieldnames, data=data, name="Fallo") return None self.conectionDB() db = self.connection[MONGO_DB] collection = db[coll] sizeofData = collection.find().count() paginas = driver.find_element(By.XPATH, "//div[@id='pagination']//span[2]").text numPag = int(paginas) print(numPag) ultima = driver.find_element(By.XPATH, "//a//img[@src='./assets/img/last.png']") driver.execute_script("arguments[0].click();", ultima) time.sleep(1) filas = driver.find_elements(By.XPATH, "//table//tbody//tr") sizeF = len(filas) dataInFront = (10 * (numPag - 1)) + sizeF if dataInFront == sizeofData: results = ("Son " + str(dataInFront) + " datos en el modulo que tambien estan en la BD") print(results) su.takescreenshot(driver=driver, namescren="TestInfoSuccessful", directory="TestModuleAdmin/") name = "TestInfoSuccessful" else: results = ("Los " + str(sizeofData) + " datos de ls BD no coinciden con los " + str(dataInFront) + " datos en la pagina") print(results) su.takescreenshot(driver=driver, namescren="TestInfoFail", directory="TestModuleAdmin/") name = "TestInfoFail" time.sleep(1) data = [{"modulo": modulo, "resultados": results}] su.createCVS(fieldnames=fieldnames, data=data, name=name) print("EVUALACION!!!!!!!!!!!!!!!!!!!!!!!!!!!!") first = driver.find_element(By.XPATH, "//img[@src='./assets/img/first.png']") driver.execute_script("arguments[0].click();", first) time.sleep(1) self.closeSshandConection() return driver
def checkInfo(self, modulo='', filtro='', dato1='', dato2=''): MONGO_DB = "logDB" fieldnames = ["modulo", "filtro", "parametros", "resultados"] su = SingUp() try: driver = su.startLoginLog(use=True) except: results = "Proceso finalizado. No se retorno el driver de inicio sesión" print(results) data = [{"modulo": modulo, "resultados": results}] su.createCVS(fieldnames=fieldnames, data=data, name="Fail" + modulo) return if driver == None: results = "Proceso finalizado. No se retorno el driver de inicio sesión" print(results) data = [{"modulo": modulo, "resultados": results}] su.createCVS(fieldnames=fieldnames, data=data, name="Fail" + modulo) return hw = HandyWrappers(driver) if modulo == "solicitudes": driver.find_element(By.XPATH, "//*[@href='#/log-solicitudes']").click() columns = ['Cliente', 'Usuario', 'Acción', 'Documento', 'Fecha'] details = [ 'Responsable:', 'Servicio Consumido:', 'Id del documento:' ] coll = "solicituds" elif modulo == "usuarios": driver.find_element(By.XPATH, "//*[@href='#/reporte-acciones']").click() columns = [ 'Sistema', 'Responsable', 'Acción', 'Usuario afectado', 'Fecha' ] details = [ 'Responsable:', 'Servicio Consumido:', 'Id del documento:' ] coll = "usuarioslogs" elif modulo == "sociedades": driver.find_element(By.XPATH, "//*[@href='#/log-sociedades']").click() columns = ['Sistema', 'Responsable', 'Acción', 'Sociedad', 'Fecha'] details = [ 'Responsable:', 'Servicio Consumido:', 'Id del documento:' ] coll = "sociedadschemas" else: print("modulo invalido") return # button = driver.find_element(By.XPATH, "//button[@class='btn btn-link collapsed']") # driver.execute_script("arguments[0].click();", button) for colum in columns: value = hw.isElementPresent(byType=By.XPATH, locator="//table//thead//*[text()='" + colum + "']") if not value: print("falta dato " + colum + " en la tabla") print("datos de la tabla analizados") print("Analizando los detalles") btnDetails = driver.find_element(By.XPATH, "//table//tr//td[6]//span[1]") driver.execute_script("arguments[0].click();", btnDetails) for d in details: value = hw.isElementPresent(locator="//table//tr//td//p[text()='" + d + "']", byType=By.XPATH) if value: text = driver.find_element( By.XPATH, "//table//tr//td//p[text()='" + d + "']//code").text if text == "": print("no hay informacion en:" + d) driver.execute_script("arguments[0].click();", btnDetails) #------------------------------------- FILTROS POR BUSQUEDA ---------------------------------------------------- if filtro == 'busqueda': indice = 0 try: indice = columns.index(dato1) + 1 except: results = "campo de busqueda " + dato1 + " no valido" print(results) name = "TestInfoFail" data = [{ "modulo": modulo, "filtro": filtro, "parametros": dato1 + " a " + dato2, "resultados": results }] su.createCVS(fieldnames=fieldnames, data=data, name=name) return print("buscando por " + dato1 + ": " + dato2) driver.find_element( By.XPATH, "//input[contains (@type,'text')and contains (@placeholder,'Búsqueda')]" ).send_keys(dato2) driver.find_element(By.XPATH, "//button[text()='Buscar']").click() time.sleep(2) filas = driver.find_elements( By.XPATH, "//tbody/tr/td[" + str(indice) + "]/div") if len(filas) == 0: print("sin resultados") else: while True: next = driver.find_element( By.XPATH, "//div[@id='pagination']//a[3]") filas = driver.find_elements( By.XPATH, "//tbody/tr/td[" + str(indice) + "]/div") for campo in filas: texto = campo.text notfind = -1 if texto.find(dato2) == notfind: print("se encontro un dato no valido") paginas = driver.find_elements( By.XPATH, "//div[@id='pagination']//span") print("pagina " + paginas[0].text + " de " + paginas[1].text) if paginas[0].text == paginas[1].text: break else: driver.execute_script("arguments[0].click();", next) time.sleep(1) print("todos los datos coinciden con la busqueda") print("comparando contra la base de datos") dataInFront = self.infoFront(driver) self.conectionDB() db = self.connection[MONGO_DB] collection = db[coll] campo = self.buscaCampoDB(dato1) print("la busqueda se reliza por :" + campo + " y se busca " + dato2) sizeofData = collection.find({campo: {"$regex": dato2}}).count() if dataInFront == sizeofData: results = ("Al filtrar son " + str(dataInFront) + " datos en el modulo que tambien estan en la BD") print(results) su.takescreenshot(driver=driver, namescren="TestInfoSuccessful", directory="TestModules/") name = "TestInfoSuccessful" else: results = ("Los " + str(sizeofData) + " datos de ls BD no coinciden con los " + str(dataInFront) + " datos en la pagina, al realizar el filtrado") print(results) su.takescreenshot(driver=driver, namescren="TestInfoFail", directory="TestModules/") name = "TestInfoFail" data = [{ "modulo": modulo, "filtro": filtro, "parametros": dato1 + ":" + dato2, "resultados": results }] su.createCVS(fieldnames=fieldnames, data=data, name=name) time.sleep(1) self.closeSshandConection() driver.quit() time.sleep(2) #------------------------------------- FILTROS POR FECHA ---------------------------------------------------- elif filtro == 'fecha': dia = dato1[:dato1.index("/")] sliceD = dato1[dato1.index("/") + 1:] mes = sliceD[:sliceD.index("/")] año = sliceD[sliceD.index("/") + 1:] dia2 = dato2[:dato2.index("/")] sliceD = dato2[dato2.index("/") + 1:] mes2 = sliceD[:sliceD.index("/")] año2 = sliceD[sliceD.index("/") + 1:] if int(dia) > 0 and int(dia) < 32: if int(mes) > 0 and int(mes) < 13: if int(año) > 2008 and int(año) < 2030: pass else: print("fecha invalida de inicio, año fuera de rango") else: print("fecha de inicio invalida, mes incorrecto") else: print("fecha de inicio invalida, dia incorrecto") if int(dia2) > 0 and int(dia2) < 32: if int(mes2) > 0 and int(mes2) < 13: if int(año2) > 2008 and int(año2) < 2030: pass else: print("fecha final invalida, año fuera de rango") else: print("fecha final invalida, mes incorrecto") else: print("fecha final invalida, dia incorrecto") #INSERTA LA PRIMER FECHA date = driver.find_element( By.XPATH, "//button[@class='btn btn-outline-secondary btn-sm'][1]") driver.execute_script("arguments[0].click();", date) time.sleep(1) element = driver.find_elements(By.XPATH, "//select[@class='custom-select']") sel = Select(element[1]) sel.select_by_value(año) sel2 = Select(element[0]) mes = str(int(mes)) sel2.select_by_value(mes) dias = driver.find_elements(By.XPATH, "//div[@class='btn-light']") if (len(dias) < dia): print("al perecer el mes " + mes + " solo tiene 30 o menos dias") return dias[int(dia) - 1].click() #INSERTA LA SEGUNDA FECHA date = driver.find_element( By.XPATH, "//button[@class='btn btn-outline-secondary btn-sm'][2]") driver.execute_script("arguments[0].click();", date) time.sleep(1) element = driver.find_elements(By.XPATH, "//select[@class='custom-select']") sel = Select(element[1]) sel.select_by_value(año2) sel2 = Select(element[0]) mes2 = str(int(mes2)) sel2.select_by_value(mes2) dias = driver.find_elements(By.XPATH, "//div[@class='btn-light']") if (len(dias) < dia2): print("al perecer el mes " + mes + " solo tiene 30 o menos dias") return dias[int(dia2) - 1].click() driver.find_element(By.XPATH, "//button[text()='Buscar']").click() time.sleep(2) #------------------- dataInFront = self.infoFront(driver) self.conectionDB() db = self.connection[MONGO_DB] collection = db[coll] date1 = [int(dia), int(mes), int(año)] date2 = [int(dia2), int(mes2), int(año2)] sizeofData = self.DateinDataB(collection=collection, date1Int=date1, date2Int=date2) if dataInFront == sizeofData: results = ("Al filtrar son " + str(dataInFront) + " datos en el modulo que tambien estan en la BD") print(results) su.takescreenshot(driver=driver, namescren="TestInfoSuccessful", directory="TestModules/") name = "TestInfoSuccessful" else: results = ("Los " + str(sizeofData) + " datos de ls BD no coinciden con los " + str(dataInFront) + " datos en la pagina al realizar el filtrado") print(results) su.takescreenshot(driver=driver, namescren="TestInfoFail", directory="TestModules/") name = "TestInfoFail" data = [{ "modulo": modulo, "filtro": filtro, "parametros": dato1 + " a " + dato2, "resultados": results }] su.createCVS(fieldnames=fieldnames, data=data, name=name) time.sleep(1) self.closeSshandConection() driver.quit() time.sleep(2) time.sleep(1) driver.quit()
def Login(self, driver, user='', passwd="", typeU=""): self.takeS = 0 self.observations = '' self.results = '' fielnames = [ 'usuario', 'contraseña', 'tipoUsuario', 'resultados', 'No. de capturas', 'observaciones' ] typeU = typeU.lower() hw = HandyWrappers(driver) driver.implicitly_wait(3) self.takescreenshot(driver, namescren='IniciaPruebaLogin', directory="ScreenshotsPruebaLogin/") self.takeS += 1 locator = By.XPATH driver.find_element(locator, "//input[@formcontrolname='" + InLogin + "']").send_keys(user) driver.find_element(By.XPATH, "//input[@type='" + InPass + "']").send_keys(passwd) self.takescreenshot(driver, namescren='LlenadoDeDatos', directory="ScreenshotsPruebaLogin/") self.takeS += 1 driver.find_element(By.XPATH, "//input[@value='" + ElmentAccess + "']").click() buttonAceptar = hw.isElementPresent( locator="//button[text()='Aceptar']", byType=By.XPATH) self.observations = hw.returnResults() if buttonAceptar: time.sleep(1) #-----------------------------screenshot------------------------------------------------- driver.find_element(By.XPATH, "//button[text()='Aceptar']").click() time.sleep(2) print( "Ocurrio un problema de autenticacion(datos incorrectos o informacion faltante)" ) self.takescreenshot(driver, namescren='FalloAutenticacion', directory="ScreenshotsPruebaLogin/") self.takeS += 1 self.results = 'Ocurrio un problema de autenticacion(datos incorrectos o informacion faltante)' data = [{ 'usuario': user, 'contraseña': passwd, 'tipoUsuario': typeU, 'resultados': self.results, 'No. de capturas': self.takeS, 'observaciones': self.observations }] csv = CSVclass() csv.writeCSV(fieldnames=fielnames, data=data, name='resultadosTC1_INICIO_SESION') return False elements = driver.find_elements(By.XPATH, "//li//a") if typeU == 'simple': if len(elements) == 3: self.results = 'Autenticacion de usuario simple exitosa' print(self.results) self.takescreenshot( driver, namescren='AtenticacionExitosaParaUsuario' + typeU, directory="ScreenshotsPruebaLogin/") self.takeS += 1 else: self.takescreenshot( driver, namescren='AtenticacionFallidaParaUsuario' + typeU, directory="ScreenshotsPruebaLogin/") self.takeS += 1 self.results = ("Autenticacion de usuario simple fallida") print(self.results) elif typeU == 'administrador': if len(elements) == 4: self.results = ( "Autenticacion de usuario administrador exitosa") print(self.results) self.takescreenshot( driver, namescren='AtenticacionExitosaParaUsuario' + typeU, directory="ScreenshotsPruebaLogin/") self.takeS += 1 else: self.takescreenshot( driver, namescren='AtenticacionFallidaParaUsuario' + typeU, directory="ScreenshotsPruebaLogin/") self.takeS += 1 self.results = ( "Autenticacion de usuario administrador fallida") print(self.results) data = [{ 'usuario': user, 'contraseña': passwd, 'tipoUsuario': typeU, 'resultados': self.results, 'No. de capturas': self.takeS, 'observaciones': self.observations }] csv = CSVclass() csv.writeCSV(fieldnames=fielnames, data=data, name='resultadosTC1_INICIO_SESION') time.sleep(2) return True