gpt4 book ai didi

javascript - 如何正确评估从 Behat 到 Selenium 的 javascript 代码?

转载 作者:行者123 更新时间:2023-12-03 03:51:12 25 4
gpt4 key购买 nike

我的自定义步骤定义中有以下代码(基于 this ):

    $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);

类似的代码在 Chrome 控制台中运行良好,但在 Behat 上下文中 $result 始终为 null。

我使用 Behat:3.0.15 以及 Selenium 3.4 和 PhantomJS 作为浏览器。

总的来说,如果我传递一行代码,它似乎可以正常工作。无论我的函数内部有什么,我总是为 null,因此下面的代码也返回 null:

    $js = <<<JS

function checkVisibility() {
return true;
}

// var el = document.querySelector("$locator");
return checkVisibility();
JS;

最佳答案

我有类似下面的东西可以工作:

    $js = <<<JS

(function myFunction() {
//function content
})()
JS;

您应该先等待该元素以确保该元素可见。

此外,为了获得响应,您应该具有以下内容:

$result = $this->getSession()->evaluateScript("return $js");

关于javascript - 如何正确评估从 Behat 到 Selenium 的 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com