varias sentencias otro estructuras else ejercicios dentro condiciones condicionales php if-statement conditional assertion codeception

otro - sentencias condicionales php



Use la aserciĆ³n CodeCeption en la declaraciĆ³n condicional(si) (6)

En tests/_support/AcceptanceHelper.php agregue un método adicional

function seePageHasElement($element) { try { $this->getModule(''WebDriver'')->_findElements($element); } catch (/PHPUnit_Framework_AssertionFailedError $f) { return false; } return true; }

Luego para probar en su uso de prueba de aceptación:

if ($I->seePageHasElement("input[name=address]")) { $I->fillField("input[name=address]", "IM"); }

Soy totalmente nuevo con CodeCeption.

Quiero hacer una acción / aserción en función de otro resultado de aserción, como este:

if ($I->see(''message'')){ $I->click(''button_close''); }

¿Es algo así posible? Lo intenté, pero no funciona. Probablemente el resultado de la afirmación no se aplica a IF, pero ¿hay alguna alternativa?

¡Gracias por adelantado!

ACTUALIZACIÓN IMPORTANTE:

Finalmente Codeception ahora tiene la función performOn !! http://codeception.com/docs/modules/WebDriver#performOn


Lanzamiento para mi proyecto viene en weeken

/** * https://.com/questions/26183792/use-codeception-assertion-in-conditional-if-statement * @param $element * @return bool * @throws /Codeception/Exception/ModuleException */ public function seePageHasElement($element) { $findElement = $this->getModule(''WebDriver'')->_findElements($element); return count($findElement) > 0; }


Puedes usar una solución como esta o combinaciones similares:

$tmp = $I->grabTextFrom(''SELECTOR''); if ($tmp == ''your text'') { $I->click(''button_close''); }


Tuve el mismo problema. Aunque no es lo ideal, puedes hacer esto:

try { $I->see(''message''); // Continue to do this if it''s present // ... } catch (Exception $e) { // Do this if it''s not present. // ... }


Solución de trabajo 100% !! Gracias a mí más tarde;)

En tests / _support / AcceptanceHelper.php agregue un método adicional

public function seePageHasElement($element) { try { $this->getModule(''WebDriver'')->_findElements($element); } catch (/PHPUnit_Framework_AssertionFailedError $f) { return false; } return true; }

Luego para probar en su uso de prueba de aceptación:

if ($I->seePageHasElement($element)) { $I->fillField($element); }

La función ''seeElement'' de WebDriver no funciona en este caso, por lo que necesita una pequeña función modificada, ya que he usado uno ''_findElements''. Por favor, no olvide construir sus actores después de cualquier cambio realizado.


ULTIMA SOLUCIÓN!

Finalmente, Codeception ahora tiene la función performOn , ¡que hace exactamente lo que pedí!

[Versión 2.2.9]

http://codeception.com/docs/modules/WebDriver#performOn

Respondiendo a mi ejemplo:

$I->performOn(''.message'', [''click'' => ''#button_close''], 30);

Espera hasta 30 segundos para ver el elemento con class = ''message'', luego haz clic en el elemento con id = ''button_close''.