使用casperjs / phantom js代码(casper.exists()函数)发生奇怪的事情

时间:2014-07-06 01:17:35

标签: javascript phantomjs casperjs

示例代码:

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")

1 个答案:

答案 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+'")]'))