我尝试寻找解决方案,但找不到能解决我问题的解决方案。我有一个在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);
}
我也尝试了其他选择
option1
var elem = digintpo.catItem_status;
var catItemRow = element(by.cssContainingText("span", "Robert 4"))
option2
在此选项中,我尝试将包含的文本解析为page_object文件中的元素,例如
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");
答案 0 :(得分:1)
量角器的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());