【问题标题】:Click every link on a web page with CasperJS使用 CasperJS 单击网页上的每个链接
【发布时间】:2014-06-04 21:00:24
【问题描述】:

我一直在使用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() 接收一个选择器作为参数,我在这个站点上有非常通用的链接。似乎是一项非常微不足道的任务,但由于某种原因,我还没有找到方法。

【问题讨论】:

  • 您还可以将您的 sn-p 减少到 casper.getElementsAttribute('a', 'href'),因为 getElementsAttribute 是 casper 1.1 版中的新功能

标签: javascript casperjs phantomcss


【解决方案1】:

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

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
    });
});

为此,我假设链接是相对唯一的:并非所有hrefs 都填充有javascript:void(0)#。如果这不成立,你应该澄清。

【讨论】:

  • 我认为我最需要的是正确的 XPath 来单击具有 href 属性的每个链接。谢谢!
猜你喜欢
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
相关资源
最近更新 更多