单击CasperJS网页上的每个链接

时间:2014-06-04 21:00:24

标签: javascript casperjs phantomcss

我一直在使用PhantomCSS编写带有网站截图的视觉回归测试。我想在页面上的每个a元素上模拟点击CasperJS。我能够检索每个href并使用open来访问每个链接,但我想模拟click事件以进行JavaScript交互等。出于某种原因,我无法找到这样做的方法。

我可以在页面上获取所有链接:

  links = casper.evaluate(function(){
    var tags = __utils__.findAll('a');
    return Array.prototype.map.call(tags, function(elem){
      return elem.href;
    });
  });

casper.click()接收选择器作为参数,我在此站点上有非常通用的链接。看起来像是一项非常简单的任务,但出于某种原因,我还没有办法做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以按已收集的a选择特定的href元素,但是您应该记住要如何构建测试,因为您需要从每个链接的网页开始

var url = "",   // some url
    links = []; // collected by your snippet
casper.eachThen(links, function(link){
    casper.thenOpen(url);
    casper.thenClick("a[href='"+link.data+"']"); // what you are looking for
    casper.then(function(){
        // your tests
    });
});

为此,我认为链接相对独特:并非所有href都填充了javascript:void(0)#。如果这不成立,你应该澄清。