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))
Beispiel #2
0
    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))
Beispiel #4
0
    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
Beispiel #5
0
    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()
Beispiel #6
0
    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