Javascript 需要使用另一个函数中定义的子元素

Javascript 需要使用另一个函数中定义的子元素,javascript,protractor,Javascript,Protractor,我试图寻找解决方案,但找不到有助于解决问题的方案。我在一个写在js文件中的函数中定义了一个元素定位器。我想在另一个js文件中将该定位器用作子元素。我试了几次,但都没有帮到我 //Page_Object.js var digintPO = function () { this.catItem_status = element.all(by.xpath("//*[text()='Status']/following-sibling::p")).first(); } module.export

我试图寻找解决方案,但找不到有助于解决问题的方案。我在一个写在js文件中的函数中定义了一个元素定位器。我想在另一个js文件中将该定位器用作子元素。我试了几次,但都没有帮到我

//Page_Object.js
var digintPO = function () {
    this.catItem_status = element.all(by.xpath("//*[text()='Status']/following-sibling::p")).first();
}
module.exports = new digintPO();
//调用上述定位器的另一个js文件

mainpage.js
var digintpo = require('./Page_Object');
this.verifyCatalog = function () {
    var catItemRow = element(by.cssContainingText("span", "Robert 4")).digintpo.catItem_status;
    catItemRow.getText().then((text) => {
        console.log(text);
    }
我还尝试了其他选择

选择1

var elem = digintpo.catItem_status;
var catItemRow = element(by.cssContainingText("span", "Robert 4"))
选择2

在这个选项中,我尝试将包含的文本解析为page_对象文件中的元素,如

this.catItem_status =element(by.cssContainingText("span", catItem_Name)).element.all(by.xpath("//*[text()='Status']/following-sibling::p")).first();
并试图称之为元素

var catItemRow = digintpo.catItem_status("Robert 4");

量角器的
ElementFinder
对象具有
getLocator()
方法,该方法将返回该特定元素使用的定位器。看看下面的例子

var ele1 = element(by.id("username"));
var ele2 = element(ele1.getLocator()); //this will return by.id("username");
// Both ele1 and ele2 refers the same element now.  
因此,在您的情况下,您可以使用

var catItemRow = element(by.cssContainingText("span", "Robert 4")).element(digintpo.catItem_status.locator());

该函数没有输入,也没有返回,因此它不工作。该函数工作正常,解决了我的问题。谢谢你的例子。添加一个澄清。量角器不“保存”元素,它只是将选择器存储为变量。当您再次调用它时,量角器将从该元素中提取当前数据