tutorial locators example espaƱol python testing selenium selenium-webdriver protractor

python - locators - Condiciones esperadas en transportador



protractor vs selenium (3)

En Protractor puedes usar browser.wait(fn, timeout) .

Ejemplo:

var element = by.id(''myDynamicElement''); browser.wait(function() { return ptor.isElementPresent(element); }, 10000); expect(ptor.isElementPresent(element)).toBeTruthy();

Mientras escribía las pruebas de selenio en Python, me acostumbré a usar Esperas explícitas mucho para esperar a que se cargue una página, o para esperar que un elemento sea visible, o haga clic, etc.

from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) )

El concepto clave aquí es proporcionar una Condición esperada para esperar, hay varios tipos:

El uso de condiciones esperadas hace que el código sea más limpio y más confiable en comparación con el uso de sleep con intervalos de tiempo codificados.

Ahora, estamos cambiando nuestra infraestructura de prueba de extremo a extremo a protractor mucho.

¿Existen Expected Conditions similares en el transportador que hay en python-selenium o java-selenium ? Si no, ¿cuál es la forma canónica de esperar explícitamente una condición en el protractor ?

He revisado la documentación del transportador y no he encontrado nada al respecto.


Una vez que la github.com/angular/protractor/pull/1703 está en (probablemente el transportador 1.7), puede hacer:

var EC = protractor.ExpectedConditions; var e = element(by.id(''xyz'')); browser.wait(EC.presenceOf(e), 10000); expect(e.isPresent()).toBeTruthy();

Sin embargo, tenga en cuenta que si está trabajando con una aplicación Angular y su prueba requiere estas esperas condicionales, es una gran señal de alerta para lo que está haciendo, ya que el transportador debe manejar las esperas de forma nativa.


waitForControlVisible(locator: string, timeout: number) { try { const element = this.findElement(locator); const condition = browser.ExpectedConditions; browser.wait(condition.visibilityOf(element), timeout); } catch (e) { console.log(e.message); console.error(''Control not visible.'', e); } }

Tal vez te ayude, espera la visibilidad del elemento en DOM.