我正在使用WebdriverIO V5 + nodejs和mocha。
我在页面对象模型中映射了一个如下所示的 xpath.js
例如:get valueLocator() { return ("//tag[contains(text(),'#')]"); }
然后我使用一个函数将 # 替换为所需的数据
import Data from './page/data'
var xpath = this.valueLocator;
var replacexpath = xpath.replace('#',Data.value);
var newxpath = this.strToObj(replacexpath);
参考功能:
strToObj(str){
var obj = {};
if(str&&typeof str ==='string'){
var objStr = str.match(/{(.)+}/g);
eval("obj ="+objStr);
}
return obj
}
参考页面
data.js
module.exports = {
value: "win 7"
}
函数工作,'newxpath' 是一种对象,现在我需要执行 WebdriverIO waitfordisplay 命令,所以下一个命令是
newxpath.waitForDisplayed(9000);
但是得到这个错误 ->"Cannot read property 'waitForDisplayed' of null"
看起来newxpath并不像Webdriver所期望的那样。如何正确执行这些步骤?
不知道为什么要在字符串和对象之间进行对话。
只需像这样使用新的 xpath(字符串,而不是 obj(:
$(newxpath).waitForDisplayed(9000);