Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;不是一个函数;从WebdriverIO中的基本pageobject页调用方法时出错_Javascript_Node.js_Automated Tests_Pageobjects_Webdriver Io - Fatal编程技术网

Javascript &引用;不是一个函数;从WebdriverIO中的基本pageobject页调用方法时出错

Javascript &引用;不是一个函数;从WebdriverIO中的基本pageobject页调用方法时出错,javascript,node.js,automated-tests,pageobjects,webdriver-io,Javascript,Node.js,Automated Tests,Pageobjects,Webdriver Io,我一直在使用页面对象模式和WebDrivero,并试图声明将在子页面中继承的选择器。这两个我都试过了 function Page() { this.loader = function() { return $("div[class*='loading'] svg"); } } 还有这个 Page.prototype.loader = function() { return $("div[class*='loading'] svg"); } 当我从子页面

我一直在使用页面对象模式和WebDrivero,并试图声明将在子页面中继承的选择器。这两个我都试过了

function Page() {
    this.loader = function() {
        return $("div[class*='loading'] svg");
    }
}
还有这个

Page.prototype.loader = function() {
    return $("div[class*='loading'] svg");
}
当我从子页面调用此函数时,例如

checkoutPage.loader.waitForVisible(5000, true);

我得到“checkoutPage.loader.waitForVisible”不是一个函数错误。我如何声明基本页面的getter以便可以从任何子页面调用它?

当调用
checkoutPage.loader.waitForVisible(5000,true)
时,实际上返回的是整个
loader
函数,而不是元素


将其更改为
checkoutPage.loader().waitForVisible(5000,true);
您的第一个示例应该工作得很好。

它不应该是
checkoutPage.loader().waitForVisible()吗
?成功了,谢谢!如果我像这样重写checkoutPage中的加载程序,有没有解释为什么它在没有括号的情况下工作?如果我必须重写子页面中的加载程序,我不想更改测试本身。
var checkoutPage=Object.create(页面,{loader:{get:function(){return$([div[class*='loading']svg”);})module.exports=checkoutPage;
是的,因为当您使用
getter
时,您将属性绑定到引用该属性时调用的函数。因此,当您使用
get
时,函数实际上是在调用
checkoutPage.loader
并返回元素时执行的。它的工作方式不同正如您在问题中发布的代码。您可以在此处阅读更多信息。