私は私のカスタムステップ定義で(thisに基づいて)のコードを次ていますBehatからSeleniumへのjavascriptコードを正しく評価する方法は?
$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);
同様のコードでは、クロムコンソールでうまく機能しているが、Behat文脈で$result
は常にnullです。
私はBehat:3.0.15
とSelenium 3.4
とPhantomJSをブラウザとして使用しています。
一般に、私は1行のコードを渡すとうまくいきます。どんなにもヌルとなるコードの下ので、私の関数内でどのような、私は、常にnullました:
$js = <<<JS
function checkVisibility() {
return true;
}
// var el = document.querySelector("$locator");
return checkVisibility();
JS;
理由だけではなく、使用しないで 'isVisible'方法:
また、あなたのようなものを持っている必要があります応答を取得するには?試しても働いていないのですか? – lauda