Javascript 同步打开PhantomJS中的链接

Javascript 同步打开PhantomJS中的链接,javascript,phantomjs,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(fu

我想知道有没有办法在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。

单击链接总是同步的。由于JavaScript的异步特性,之后发生的事情总是异步的

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

  • 使用的静态时间量
  • 动态等待一个条件
  • 在单击之前,通过注册到
    页面加载下一页。onLoadFinished
  • 等待所有未完成的请求完成(和),或
  • 这四种方法的组合

将读取您的链接。顺便问一下,你认为哪一个适合我的需要?我点击的链接大约是7-10。使用setTimeout设置时间量时,会浪费时间。i、 我设置3s超时,然后页面在1s内完成加载。这取决于您的需要、页面的行为以及您愿意写多少。我建议从一个简单的
页面开始。onload finished
,如果这不起作用,请转到
waitFor
等待条件/选择器。如果这仍然不起作用,或者条件太难匹配,请尝试等待完成的请求,然后进行短暂的
setTimeout
确认。感谢您的回复。我先试试。