Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo encapsular el cartucho de tóner Python

Cómo encapsular el cartucho de tóner Python

1. Encapsulación de funciones de uso común

En el proceso de utilizar Selenium para pruebas de automatización web, a menudo se encuentran varios problemas, como:

1. El la página se carga lentamente y Selenium arroja una excepción después de encontrar el elemento, lo que provoca que el script se cancele.

2 Al escribir el script, se descubre que la lógica del código no es lo suficientemente clara y el mantenimiento es difícil, lo que resulta complicado. reduce la eficiencia de las pruebas

Por lo tanto, es necesario encapsular selenio para que el marco sea más adecuado para las necesidades de la empresa.

Por lo tanto, es necesario empaquetar selenio para que el marco sea más adecuado para las necesidades de la empresa. El siguiente es el paquete de clase base, que utiliza principalmente el modelo singleton y puede almacenar código de lógica empresarial en diferentes archivos Python. /p >

Nota: BASE_URL es la dirección de inicio de sesión del blog garden

1 # -*- codificación: utf-8 -*- ?2 desde selenium import webdriver ?3 tiempo de importación ?4 ? 5 OVER_TIME = 5 ?6 BASE_URL = "nblogs.com/user/signin?ReturnUrl=hFwww.cnblogs.com2F" ?7 ?8 ?9 clase Controlador (objeto): 10 11 def __new__(cls, *args, **kw ): 12 " ""13 Utilice el modo singleton para configurar la clase para que tenga solo una instancia en tiempo de ejecución. Cuando utilice la clase base en otras clases de Python, 14 puede crear varios objetos para garantizar que todos los objetos se basen en un navegador 15 """"16 si no hasattr(cls, '_instance'): 17 orig = super(Driver, cls) 18 cls._instance = orig.__new__(cls, *args, **kw) 19 return cls._ instancia 20 ?21 def start(self, url=BASE_URL, driver_name="Chrome"): 22 """ 23 Inicie el navegador 24: param url: Dirección de prueba 25: param driver_name: Establezca el tipo de navegador al inicio 26:: "" 28 if cls._instance = orig .__new__(cls, *args, **kw) return: 27 """28 if nombre_controlador == "Firefox": 29 self.driver = webdriver.Firefox() 30 elif nombre_controlador == " Es decir": 31 self.driver = webdriver.Ie() 32 más: 33 self.driver = webdriver.Chrome() 34 self.driver.implicitly_wait(OVER_TIME) 35 self.driver.get(url) 36 self.driver.maximize_window () 37 ?38 def get_url (self): 39 """Devolver dirección del navegador"""40 return BASE_URL 41 ?42 def find_element(self, by, value): 43 """44 Agregue OVER_TIME como tiempo de espera para buscar elementos .

Según la configuración del sistema OVER_TIME tamaño 45 """46 para i en el rango (OVER_TIME): 47 intente: 48 return self.driver.find_element(by=by, value=value) 49 excepto excepción, e: 50 print e 51? 52 def find_elements(self, by, value): 53 """Igual que find_element""" 54 for i in range(OVER_TIME): 55 try: 56 return self.driver.find_elements(by=by, valor=valor) 57 intente: 48 devolver self.driver.find_elements(por=por, valor=valor) 49 excepto excepción, e: 50 imprimir por, valor=valor) 57 excepto excepción, e: 58 imprimir e 59 ?60 def find_display_elements(self, por , valor): 61 """62 Encuentra una colección de elementos cuyo estado se muestra. Al buscar un tipo de elemento, 63 normalmente algunos elementos son invisibles.

Algunos elementos son invisibles, esta función enmascarará esos elementos invisibles 64 """ 65 for i in range(OVER_TIME): 66 try: 67 elements = self.driver.find_elements(by=by, value=value) 68 num = elements . __len__() 69 excepto excepción, e: 70 print e 71 time.sleep(1) 72 if num gt; = 1: 73 break 74 display_element = [] 75 # Coloque los elementos visibles en la lista y devuelva 76 para j en el rango( num): 77 elemento = elementos.__getitem__(j) 78 if elemento.is_displayed(): 79 display_element.append(elemento) 80 return display_element 81 ?82 def is_ element_present(self, By, Value): 83 """ Determinar si el elemento existe """ 84 try: 85 self.driver.find_element(by=By, value=Value) 86 return True 87 excepto excepción, e. 88 print e 89 return False 90 ?91 def close(self): 92 self .driver.close() 93 ?94 def quit(self):95 u""Salir del navegador"""96 self.driver.quit() 97 ?98 if __name__ == "__main__":99 página = Driver()100 page.start()

2: Diseñe el script de inicio de sesión utilizando el marco de encapsulación y el modo de objeto de página

1 # -*- codificación: utf-8 -*- 2 desde webdriver import Driver 3 desde selenium.webdriver.common.by import Por 4 ?5 ?6 clase Inicio de sesión(objeto): 7 8 def __init__(self, user_name="xxx", pwd="xxx"): 9 self.page = Driver() 10 página = self.page11 page.start(url=page.get_url())12 self.user_name = page.find_element(By.ID, "entrada1")13 self.pwd = page.find_element(By.ID, "entrada2" )14 self.user_name = page.find_element(By.ID, "input1")15 self.pwd = page.find_ element(By.ID, "input2")16 self.login_btn = page.get_url())login_btn = página .find_element(Por.ID, "iniciar sesión")15 self.login(nombre_usuario, contraseña)16

17 def inicio de sesión (self, nombre de usuario, pwd): 18 self.user_name.clear()19 self.user_name.send_keys(nombre de usuario) 20 self.pwd.clear()21 self.user_name.send_keys(nombre de usuario) 21 self.pwd. clear()22 self.login(nombre_usuario)pwd.clear()21 self.pwd.send_keys(pwd) 22 self.login_btn.click()23 24 25 if __name__ == "__main__": 26 Iniciar sesión("xxx", "xxx")

3. Diseño de script para abrir noticias de blogspot, tareas de blog y otras subpáginas

1 # -*- codificación: utf-8 -*- 2 desde webdriver importar el controlador 3 desde el inicio de sesión importar el inicio de sesión 4 desde selenium.webdriver.common.by importar por 5 ?6 ?7 clase SubPage(object): 8 ?9 def __init__(self): 10 self.page = Driver()11 page = self .page12 self.home_page = page.find_element(Por.LINK_TEXT, u "jardín")13 self.news_page = page.find_element(Por.LINK_TEXT, u "noticias")14 self.q_page = page.find_element(Por.LINK_TEXT, u " BoQ")15 self.ing_page = page.find_element(By.LINK_TEXT, u "Flash")16 17 def open_home_page(self): 18 self.home_page.click()19 20 def open_news_page(self): 21 self. news_page.click()22 23 def open_q_page(self): 24 self.q_page.click()25 26 def open_ing_page(self): 27 self.ing_page.click()28 29 30 if __name__ == '__main__': 31 Iniciar sesión (" xxx", "xxx")32 sub = SubPage()33 sub.open_q_page()

Otros

Según este modelo, los blogueros pueden realizar la automatización según el. Guión de prueba comercial específico de la empresa. Este artículo es un punto de partida. Si tiene otras ideas mejores, pueden discutirlas juntos