def mouseHover(self): baseUrl = "https://letskodeit.teachable.com/p/practice/" driver = webdriver.Chrome() wrap = HandyWrappers(driver) driver.maximize_window() driver.implicitly_wait(5) driver.get(baseUrl) driver.execute_script("window.scrollBy(0, 600);") hoverElement = wrap.getElement("//button[@id='mousehover']") ActionChains(driver).move_to_element(hoverElement).perform() print("Moved mouse to MOUSE HOVER button") ActionChains(driver).pause(2).perform() topBtn = wrap.getElement("//a[@href='#top']") ActionChains(driver).move_to_element(topBtn).click().perform() print("Clicked TOP on MOUSE HOVER DROPDOWN") ActionChains(driver).pause(2).perform() driver.execute_script("window.scrollBy(0, 600);") ActionChains(driver).move_to_element(hoverElement).perform() print("Moved mouse to MOUSE HOVER button AGAIN") ActionChains(driver).pause(2).perform() reloadBtn = wrap.getElement("//a[text()='Reload']") ActionChains(driver).move_to_element(reloadBtn).click().perform() print("Clicked RELOAD on MOUSE HOVER DROPDOWN") ActionChains(driver).pause(3).perform()
def test(self): base_url = "https://letskodeit.teachable.com/pages/practice" driver = webdriver.Firefox() driver.maximize_window() hw = HandyWrappers(driver) driver.get(base_url) element_result = hw.elementPresenceCheck("name", By.ID) print(element_result) driver.quit()
def test(self): base_url = "https://letskodeit.teachable.com/pages/practice" driver = webdriver.Firefox() driver.maximize_window() hw = HandyWrappers(driver) driver.get(base_url) text_field = hw.getElement("name", "id") text_field.send_keys("yippeekiyay") time.sleep(3) driver.quit()
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://learn.letskodeit.com/p/practice" driver = webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(10) hw = HandyWrappers(driver) driver.get(baseUrl) textField1 = hw.getElement("name") textField1.send_keys("Test") time.sleep(2) textField2 = hw.getElement("//input[@id='name']", locatorType="xpath") textField2.clear()
def test(self): baseUrl = "https://letskodeit.teachable.com/" driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) wrapper = HandyWrappers(driver) driver.get(baseUrl) loginLink = wrapper.getElement("//a[@href='/sign_in']") loginLink.click() emailField = wrapper.getElement("//input[@id='user_email']") emailField.send_keys("*****@*****.**")
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://www.google.com" driver = webdriver.Chrome(r"") driver.maximize_window() driver.get(baseUrl) hw = HandyWrappers(driver) textField1 = hw.getElement("") # It expect locator and locatorType textField1.send_keys("") time.sleep(3) textField2 = hw.getElement("//*[@id='name']", locatorType="xpath") # <-- XPATH textField2.clear()
def switchFrames(self): baseUrl = "https://letskodeit.teachable.com/p/practice" driver = webdriver.Chrome() wrap = HandyWrappers(driver) driver.maximize_window() driver.implicitly_wait(5) driver.get(baseUrl) driver.execute_script("window.scrollBy(0, 1000);") #Swith to frame usind ID #driver.switch_to.frame("courses-iframe") #Swith to frame using name #driver.switch_to.frame("iframe-name") #Switch to frame using numbers driver.switch_to.frame(0) #Serch cource ActionChains(driver).pause(2).perform() wrap.getElement("//input[@id='search-courses']").send_keys("python") wrap.getElement("//button[@id='search-course-button']").click() ActionChains(driver).pause(2).perform() #Switch back to the parent handle driver.switch_to.default_content() wrap.getElement("//input[@id='name']").send_keys("ON THE MAIN FRAME") ActionChains(driver).pause(2).perform()
def test(self): baseUrl = "https://letskodeit.teachable.com" snap = TakeScreenshot() driver = webdriver.Chrome() driver.maximize_window() wrapper = HandyWrappers(driver) driver.get(baseUrl) driver.implicitly_wait(5) wrapper.getElement("//a[@href='/sign_in']").click() wrapper.getElement("//input[@id='user_email']").send_keys("*****@*****.**") wrapper.getElement("//input[@id='user_password']").send_keys("abc") wrapper.getElement("//input[@type='submit']").click() snap.takeScreenshot(driver) ActionChains(driver).pause(2).perform()
class ExplicitWaitTypes(): def __init__(self, driver): self.driver = driver self.hw = HandyWrappers(driver) def waitForElement(self, locator, locatorType="id", timeout=10, pool_Frequency=0.5): element = None try: byType = self.hw.getByType(locatorType) print("Waiting for maximum :: " + str(timeout) + " :: seconds for element to be clickable") wait = WebDriverWait(self.driver, 10, poll_frequency=1, ignored_exceptions=[ NoSuchElementException, ElementNotVisibleException, ElementNotSelectableException ]) element = wait.until(EC.element_to_be_clickable((byType, ""))) print("Element appeared on the web page") except: print("Element not appeared on the web page") print_stack() return element
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) textField1 = hw.getElement("name") textField1.send_keys("Test") time.sleep(2) textField2 = hw.getElement("//input[@id='name']", locatorType="xpath") textField2.clear()
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 sliders(self): baseUrl = "http://jqueryui.com/slider/" driver = webdriver.Chrome() wrap = HandyWrappers(driver) actions = ActionChains(driver) driver.maximize_window() driver.implicitly_wait(5) driver.get(baseUrl) driver.switch_to.frame(0) sliderElement = wrap.getElement("//div[@id='slider']/span") actions.pause(2).perform() try: actions.drag_and_drop_by_offset(sliderElement, 150, 0) print("Slided!") actions.pause(2).perform() except: print("Sliding Failed")
def test(self): baseUrl = "https://letskodeit.teachable.com/p/practice" driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(5) hw = HandyWrappers(driver) driver.get(baseUrl) textField1 = hw.getElement("name", "id") textField1.send_keys("Text") ActionChains(driver).pause(2).perform() textField2 = hw.getElement("//input[@id='name']") textField2.clear() ActionChains(driver).pause(1).perform() textField2.send_keys("NEW TEXT") ActionChains(driver).pause(2).perform()
def test(self): baseUrl = "https://letskodeit.teachable.com/p/practice" driver = webdriver.Chrome() driver.maximize_window() wrapper = HandyWrappers(driver) driver.implicitly_wait(5) driver.get(baseUrl) hideShow = wrapper.getElement("//input[@id='displayed-text']") hideShow.send_keys("TEXT") ActionChains(driver).pause(2).perform() hideBtn = wrapper.getElement("//input[@id='hide-textbox']") hideBtn.click() ActionChains(driver).pause(2).perform() showBtn = wrapper.getElement("//input[@id='show-textbox']") showBtn.click() ActionChains(driver).pause(1).perform()
def waitForElement(self, locator, locatorType="id", timeout=10): element = None try: hw = HandyWrappers(self.driver) locatorType = hw.getByType(locatorType) print("Espera maxima de:: " + str(timeout) + ":: segundos para que el elemento sea usable") element = WebDriverWait( self.driver, timeout, poll_frequency=1, ignored_exceptions=[ NoSuchElementException ]).until(lambda driver: self.driver.find_element( locatorType, locator)) print("Elemento aparecio en la pagina web") except: print("Elemento aparecio no en la pagina web") return element
def test(self): baseUrl = "http://letskodeit.teachable.com/pages/practice" driverlocation = "/usr/local/bin/chromedriver" os.environ["webdriver.crome.driver"] = driverlocation # Instantiate Crome Browser Command driver = webdriver.Chrome(driverlocation) driver.maximize_window() driver.implicitly_wait(10) driver.get(baseUrl) # Now create an object hw which is the instance of the # HandyWrappers class hw = HandyWrappers(driver) textField = hw.getElement("name") textField.send_keys("Test") time.sleep(2) textField2 = hw.getElement("//input[@id='name']",locatorType="xpath") textField2.clear()
def switchToAlert(self): baseUrl = "https://letskodeit.teachable.com/p/practice" driver = webdriver.Chrome() wrap = HandyWrappers(driver) driver.maximize_window() driver.implicitly_wait(5) driver.get(baseUrl) inputElement = wrap.getElement("//input[@id='name']") inputElement.send_keys("Sergey") print("Inputed text") alertBtn = wrap.getElement("//input[@id='alertbtn']") alertBtn.click() print("Clicked ALERT button") ActionChains(driver).pause(2).perform() alert1 = driver.switch_to.alert alert1.accept() print("Clicked OK(accepted)") ActionChains(driver).pause(2).perform() confirmBtn = wrap.getElement("//input[@id='confirmbtn']") confirmBtn.click() print("Clicked CONFIRM button") ActionChains(driver).pause(2).perform() alert2 = driver.switch_to.alert alert2.accept() print("Accepted alert") ActionChains(driver).pause(2).perform() confirmBtn.click() print("Clicked CONFIRM button again") ActionChains(driver).pause(2).perform() alert3 = driver.switch_to.alert alert3.dismiss() print("Dismissed alert") ActionChains(driver).pause(2).perform()
def test(self): baseUrl = "https://letskodeit.teachable.com/p/practice/" driver = webdriver.Chrome() driver.maximize_window() wrap = HandyWrappers(driver) driver.implicitly_wait(5) #driver.get(baseUrl) driver.execute_script( "window.location = 'https://letskodeit.teachable.com/p/practice';") #element = wrap.getElement("//input[@id='name']") element = driver.execute_script( "return document.getElementById('name');") element.send_keys("Test") ActionChains(driver).pause(3).perform()
def switchWindow(self): baseUrl = "https://letskodeit.teachable.com/p/practice" driver = webdriver.Chrome() wrap = HandyWrappers(driver) driver.maximize_window() driver.implicitly_wait(5) driver.get(baseUrl) #Find parent window handle parentHandle = driver.current_window_handle print("Parent handle" + parentHandle) #find window btn and click it wrap.getElement("//button[@id='openwindow']").click() ActionChains(driver).pause(2).perform() #Find all handles handles = driver.window_handles #Switch to window and serch for handle in handles: print("Handle: " + handle) if handle not in parentHandle: driver.switch_to.window(handle) print("Switched to the window " + handle) searchBox = wrap.getElement("//input[@id='search-courses']") searchBox.send_keys("python") wrap.getElement("//button[@id='search-course-button']").click() ActionChains(driver).pause(2).perform() driver.close() break #Switch back to parent handle driver.switch_to.window(parentHandle) wrap.getElement("//input[@id='name']").send_keys("On Main Window") ActionChains(driver).pause(3).perform()
def test1(self): baseUrl = "http://www.expedia.com" driver = webdriver.Chrome() driver.maximize_window() wrapper = HandyWrappers(driver) driver.get(baseUrl) driver.implicitly_wait(5) #Click flights tab wrapper.getElement("//button[@id='tab-flight-tab-hp']").click() #Find departing field depField = wrapper.getElement("//input[@id='flight-departing-hp-flight']") #Click departing field depField.click() #Find the date to select dateToSelect = wrapper.getElement("//div[@class='col gcw-date-field']//div[2]//button[text()='26']") #Click the date dateToSelect.click() ActionChains(driver).pause(3).perform()
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 __init__(self, driver): self.driver = driver self.hw = HandyWrappers(driver)
def Login(self, driver=None, user='', passwd="", element={}): self.takeS = 0 self.observations = 'without observations' self.results = '' self.valueL = '' self.locator = '' fieldnames = [ 'user', 'password', 'results', 'Number of screenshots', 'observations' ] driver.maximize_window() hw = HandyWrappers(driver) if len(element) < 0: self.locator = By.XPATH self.valueL = "//input[@type='text']" else: self.locator = hw.getByType(element['locator']) self.valueL = element['valueL'] driver.implicitly_wait(3) self.takescreenshot(driver, namescren='TestStartLogin', directory="ScreenshotsPruebaLogin/") self.takeS += 1 # --------------------------------------------------------------------------------------------------------------- A = driver.find_elements(self.locator, self.valueL) if len(A) > 1: for element in A: try: element.send_keys(user) except: pass elif len(A) == 1: A[0].send_keys(user) else: print("element " + self.valueL + " not found, process finished") self.results = "AuthenticationFail" self.observations = "element " + self.valueL + " not found, process finished" data = [{ 'user': user, 'password': passwd, 'results': self.results, 'Number of screenshots': self.takeS, 'observations': self.observations }] self.createCVS(fieldnames, data, name=self.results) return B = driver.find_elements(By.XPATH, "//input[@type='password']") if len(B) > 1: for element in B: try: element.send_keys(passwd) except: pass elif len(B) == 1: B[0].send_keys(passwd) else: print("element for put password not found, process finished") self.results = "AuthenticationFail" self.observations = "element for put password not found, process finished" data = [{ 'user': user, 'password': passwd, 'results': self.results, 'Number of screenshots': self.takeS, 'observations': self.observations }] self.createCVS(fieldnames, data, name=self.results) return self.takescreenshot(driver, namescren="FillFields", directory="ScreenshotsPruebaLogin/") self.takeS += 1 C = driver.find_elements(By.XPATH, "//*[@type='submit']") if len(C) > 1: for element in C: try: element.click() except: pass elif len(C) == 1: C[0].click() else: print("button to start session up not found, process finished") self.results = "AuthenticationFail" self.observations = "Button to start session not found, process finished" data = [{ 'user': user, 'password': passwd, 'results': self.results, 'Number of screenshots': self.takeS, 'observations': self.observations }] self.createCVS(fieldnames, data, name=self.results) return time.sleep(3) print("validating authentication") V1 = hw.elementPresenceCheck(locator=self.valueL, byType=self.locator) V2 = hw.elementPresenceCheck(locator="//input[@type='password']", byType=By.XPATH) V3 = hw.elementPresenceCheck(locator="//*[@type='password']", byType=By.XPATH) if V1 and V2 and V3: self.takescreenshot(driver, namescren="AuthenticationFail", directory="ScreenshotsPruebaLogin/") self.takeS += 1 self.results = "AuthenticationFail" else: self.takescreenshot(driver, namescren="AuthenticationSuccessful", directory="ScreenshotsPruebaLogin/") self.takeS += 1 self.results = "AuthenticationSuccessful" data = [{ 'user': user, 'password': passwd, 'results': self.results, 'Number of screenshots': self.takeS, 'observations': self.observations }] self.createCVS(fieldnames, data, name=self.results)
def test(self): baseUrl = "https://www.expedia.com" driver = webdriver.Chrome() wrapper = HandyWrappers(driver) driver.implicitly_wait(0.5) driver.maximize_window() driver.get(baseUrl) wrapper.getElement("//button[@id='tab-flight-tab-hp']").click() wrapper.getElement("//input[@id='flight-origin-hp-flight']").send_keys( "SFO") wrapper.getElement( "//input[@id='flight-destination-hp-flight']").send_keys("NYC") wrapper.getElement("//input[@id='flight-departing-hp-flight']" ).send_keys("03/01/2018") returnDate = wrapper.getElement( "//input[@id='flight-returning-hp-flight']") returnDate.clear() returnDate.send_keys("03/03/2018") searchBtn = wrapper.getElement( "//form[@id='gcw-flights-form-hp-flight']//div[@class='cols-nested']//label[@class='col search-btn-col']//button[@type='submit']" ) ActionChains(driver).move_to_element(searchBtn).click( searchBtn).perform() wrapper.getElement("//input[@id='stopFilter_stops-0']").click() ActionChains(driver).pause(3).perform()
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
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 authModal(self, nombre, apellido, correo, area, rol, usuario, contraseña, check): try: driver = self.checkInfo( modulo= "http://ec2-34-210-56-229.us-west-2.compute.amazonaws.com:3001/#/administracion/:modulo", datos=[ "Nombre", "Apellidos", "Tipo", "Email", "Área", "Usuario", "Estatus" ]) if driver == None: print( "ocurrio un problema el driver no se retorno, proceso finalizado" ) return except: print("Error inesperado en el driver:", sys.exc_info()[0]) try: driver.quit() except: pass return su = SingUp() driver.find_element(By.XPATH, "//button[text()='Agregar usuario']").click() time.sleep(1) try: modal = driver.find_element( By.XPATH, "//div[@class='modal-dialog']//div[@class='modal-content']") except: print("element modal not found") su.takescreenshot(driver, namescren="FailModal", directory="TestModuleAdmin/") driver.quit() return try: modal.find_element(By.XPATH, "//div[@class='modal-header']") modal.find_element(By.XPATH, "//div[@class='modal-body']") modal.find_element(By.XPATH, "//div[@class='modal-footer']") except: su.takescreenshot(driver, namescren="FailModal", directory="TestModuleAdmin/") print("El modal no contiene una estructura valida") driver.quit() return try: su.takescreenshot(driver, namescren="Modal", directory="TestModuleAdmin/") driver.find_element(By.XPATH, "//input[@name='nombre']").send_keys(nombre) driver.find_element( By.XPATH, "//input[@name='apellido']").send_keys(apellido) driver.find_element(By.XPATH, "//input[@name='correo']").send_keys(correo) driver.find_element(By.XPATH, "//input[@name='area']").send_keys(area) sel = Select(driver.find_element(By.XPATH, "//select[@name='rol']")) #select sel.select_by_value(rol) driver.find_element(By.XPATH, "//input[@name='usuario']").send_keys(usuario) driver.find_element( By.XPATH, "//input[@type='password']").send_keys(contraseña) if check: checking = driver.find_element(By.XPATH, "//input[@name='activo']") driver.execute_script("arguments[0].click();", checking) su.takescreenshot(driver, namescren="CamposLlenos", directory="TestModuleAdmin/") driver.find_element(By.XPATH, "//input[@type='submit']").click() except: print("Error inesperado al registrar usuario :", sys.exc_info()[0]) driver.quit() return hw = HandyWrappers(driver) if hw.elementPresenceCheck( locator="//*[text()='¡El usuario ya existe!']", byType="xpath"): res = self.VerificarusrBD(usuario) if res > 0: print("Usuario existente, denegado con exito") else: print("El sistema denego un usuario valido") su.takescreenshot(driver, namescren="UsuarioExiste", directory="TestModuleAdmin/") driver.find_element( By.XPATH, "//button[contains(text(),'Aceptar')]").click() self.closeSshandConection() if not self.encuentraUsrFront(driver, 6, usuario): print( "El usuario denegado no se muestra en el front(esto no es correcto)" ) driver.quit() return su.takescreenshot(driver, namescren="UsuarioAgregado", directory="TestModuleAdmin/") driver.find_element(By.XPATH, "//button[contains(text(),'Aceptar')]").click() last = driver.find_element(By.XPATH, "//img[@src='./assets/img/last.png']") driver.execute_script("arguments[0].click();", last) res = self.VerificarusrBD(usuario) if res > 0: print("Usuario agregado correctamente a la BD") else: print("Ocurrio un problema al encontrar el usuario en la BD") driver.quit() return find_td = TD_VALIDAR.format(usuario) find = hw.getElement(locator=find_td, locatorType="XPATH") if not find: print("La pagina NO muestra correctamente el usuario") driver.quit() return down = driver.find_element(By.XPATH, "//img[contains(@src,'sort-down.png')]") driver.execute_script("arguments[0].click();", down) closesession = driver.find_element( By.XPATH, "// button[contains(text(), 'Cerrar sesión')]") driver.execute_script("arguments[0].click();", closesession) self.closeSshandConection() su.Login(driver=driver, user=usuario, passwd=contraseña, element={ "locator": "XPATH", "valueL": "//input[@type='text']" })
def test(self): baseUrl = "https://letskodeit.teachable.com" driver = webdriver.Chrome() driver.maximize_window() wrapper = HandyWrappers(driver) driver.implicitly_wait(5) driver.get(baseUrl) wrapper.getElement("//a[@href='/sign_in']").click() email = wrapper.getElement("//input[@id='user_email']") email.send_keys("*****@*****.**") password = wrapper.getElement("//input[@id='user_password']") password.send_keys("abcabc") wrapper.getElement("//input[@type='submit']").click() searchBox = wrapper.getElement("//input[@id='search-courses']") searchBox.send_keys("JavaScript") searchBtn = wrapper.getElement("//button[@id='search-course-button']") searchBtn.click() _course = "//div[contains(@class, 'course-listing-title') and contains(text(), '{0}')]" _courseLocator = _course.format("JavaScript for beginners") ActionChains(driver).pause(1).perform() courseElement = wrapper.getElement(_courseLocator) courseElement.click() ActionChains(driver).pause(3).perform()