示例代码:
function myfunc(){
ctxt = "this is the" + variable1 + "value";
if (casper.exists(x('//p[@class="classname" and contains(text(), ctxt)]{
//code1;
}
}
调用myfunc
时,无论if
是否存在,每次都会执行ctext
块。
但是,如果我对文本进行硬编码而不是ctxt,例如"abcde"
,那么它的执行就不会发生。
这就是我的意思:
contains(text(), "abcde")
答案 0 :(得分:2)
插入variable1
的位置周围可能存在问题。您可以尝试像这样定义ctxt
:
ctxt = "this is the " + variable1 + " value";
exists
调用应如下所示:
casper.exists(x('//p[@class="classname" and contains(text(), "'+ctxt+'")]'))
您需要修复右括号:]{
应为]'))){
。
另一件事是你忘了使用变量。相反,您只是将变量名称(ctxt
)插入XPath表达式而不是变量值"'+ctxt+'"
。
如果仍然无效,您可以尝试规范化文本的空白区域:
casper.exists(x('//p[@class="classname" and contains(normalize-space(text()), "'+ctxt+'")]'))