同步打开PhantomJS中的链接

时间:2015-11-23 07:56:04

标签: javascript phantomjs

我想知道有没有办法同步点击PhantomJS上的链接(打开链接)。首先必须打开第一页,然后单击第一页上的链接转到第二页。这是我使用setTimeout的方法:

var page = require('webpage').create();
var url = "http://domain.tld/index.html";

page.open(url, function (status) {
    page.render("1-home.png");

    page.evaluate(function() {
        // search for element and click it to redirect
        document.getElementById("RetailUser").click();
    });

    // I use setTimeout to wait for firstpage to get loaded
    setTimeout(function () {
        // do another process on second page
    }, 5000);

}

PS:我知道我可以使用CasperJS完成它。但如果可能的话,我不想使用CasperJS。

1 个答案:

答案 0 :(得分:3)

单击链接始终是同步的。之后发生的事情总是异步的,因为JavaScript的异步性质。

有多种方法可以等待下一页:

  • setTimeout
  • 的静态时间
  • 使用waitFor
  • 动态等待条件
  • 通过在点击前注册page.onLoadFinished来加载下一页,
  • 等待所有未完成的请求完成(onetwo)或
  • 这四种方法的组合。