Ich habe folgenden Code (basierend auf this) in meiner benutzerdefinierten Schritt Definition:Wie bewerten Sie Javascript-Code von Behat zu Selenium richtig?
$js = <<<JS
function checkVisibility(elm, evalType) {
evalType = evalType || "visible";
var vpH = jQuery(window).height(), // Viewport Height
st = jQuery(window).scrollTop(), // Scroll Top
y = jQuery(elm).offset().top,
elementHeight = jQuery(elm).height();
if (evalType === "visible") return ((y < (vpH + st)) && (y > (st - elementHeight)));
if (evalType === "above") return ((y < (vpH + st)));
}
var el = document.querySelector("$locator");
return checkVisibility(el, "visible");
JS;
$result = $this->getSession()->evaluateScript($js);
ähnlicher Code funktioniert gut in Chromkonsole, aber in Behat Kontext $result
ist immer null.
Ich benutze Behat: 3.0.15
mit Selen 3.4
und PhantomJS als Browser.
Im Allgemeinen scheint es, dass, wenn ich einen einzeiligen Code übergebe, es ok arbeitet. Egal, was in meiner Funktion ist, ich habe immer null, so unten Code auch mit null ergeben:
$js = <<<JS
function checkVisibility() {
return true;
}
// var el = document.querySelector("$locator");
return checkVisibility();
JS;
Warum gerade nicht 'isVisible' Methode? hast du es versucht und funktioniert nicht? – lauda