PhantomJS - 单击元素

时间:2016-10-12 08:36:40

标签: javascript phantomjs

我想点击网站上的元素,然后截取屏幕截图,如何在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();
});

如何点击它然后截取屏幕截图以确保我转到下一页。

1 个答案:

答案 0 :(得分:1)

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

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

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