我想单击网站上的元素,然后截屏,如何在PahantomJS中做到这一点?

这是我的html:

<html>
<head>
    <title>list</title>
</head>
<body class="directory">
    <input id="search" type="text" placeholder="Search" autocomplete="off">
    <div id="wrapper">
      <h1> / </h1>
      <ul id="files" class="view-tiles">
        <li><a href="/build" class="" title="build"><span class="name">build</span><span class="size">0</span><span class="date">Wed Oct 12 2016 </span></a></li>
      </ul>
    </div>
</body>
</html>


那就是我尝试过的

var page = require('webpage').create();

page.onError = function(msg, trace) {
  return;
};

page.open("http://localhost:9001/", function(status){
    if (status !== 'success') {
        console.log('Unable to load the url!');
        // phantom.exit();
    } else {

        console.log("click");
        page.render('1.png');

            document.getElementById("build").click();

        page.render('2.png');


    page.onConsoleMessage = function(msg, lineNum, sourceId) {
        console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');

        if (msg === "finished") {

            console.log("click");


            }
        };
    // phantom.exit();
    }


    // phantom.exit();
});


如何单击它,然后截图以确保我移至下一页。

最佳答案

如果要访问phantomjs加载的页面的dom /窗口,则需要将click代码包装在page.evaluate函数中。它将被同步执行

所以你的代码看起来像这样

console.log("click");
page.render('1.png');
page.evaluate(function(selector){
    return document.getElementById(selector).click();
}, 'build');
page.render('2.png');

关于javascript - PhantomJS-单击元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39994081/

10-16 14:15
查看更多