为什么我不能在phantomJS中加载我的页面?

Why can't I load my page in phantomJS?

本文关键字:我的 加载 不能 phantomJS 为什么      更新时间:2023-09-26

我想访问一个本地设备的网页。这是该页面的HTML代码的一部分:

<div class="form-container">
    <h2 class="form-signin-heading">Please Log In</h2>
    <div class="form-group input-group auth focus">
      <label for="user_account" class="visuallyhidden">Username:</label>
      <span class="input-group-addon"><i class="icon-user"></i></span>
      <input autofocus="autofocus" class="form-control auth" id="user_account" maxlength="128" name="user[account]" placeholder="Enter User Name" size="128" type="text" />
    </div>
    <div class="form-group input-group auth">
      <label for="user_password" class="visuallyhidden">Password:</label>
      <span class="input-group-addon"><i class="icon-lock"></i></span>
       <input autocomplete="off" class="form-control auth" id="user_password" maxlength="128" name="user[password]" placeholder="Enter Password" size="128" type="password" />
    </div>
    <input type="hidden" id="window_size" name="window_size"/>
    <input type="hidden" id="url_hash" name="url_hash"/>
    <button id="logInButton" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  </div>

我想输入用户名和密码,然后通过登录按钮登录。在我更新设备之前,脚本可以正常工作。现在我不能让它再工作了。

这是我的脚本:

page.open("https://10.84.163.146/login/login", function(status){
    console.log(page.content);
});
page.render('Bild2.png');
console.log(page.content);
page.evaluate(function(){
    console.log(document.getElementsByClassName("form-group input-group auth"));
    console.log(document.getElementById("user_account"));
    document.getElementsByClassName("form-control auth").value="op";

控制台输出如下:

/Desktop$ phantomjs --ignore-ssl-errors=true check.js 
<html><head></head><body></body></html>
[object NodeList]
null

所以在打印页面时。内容为空,渲染的图片也是空的。但是,如果它不能找到/打开页面,为什么如果找到一个[对象NodeList],而不是user_account元素?

page.open()是异步的。如果您想在加载的页面上做一些事情,那么您需要将该代码放入page.open()回调中:

page.onConsoleMessage = function(msg){
    console.log("remote> " + msg);
};
page.open("https://10.84.163.146/login/login", function(status){
    console.log(page.content);
    page.render('Bild2.png');
    console.log(page.content);
    page.evaluate(function(){
        console.log(document.getElementsByClassName("form-group input-group auth"));
        console.log(document.getElementById("user_account"));
        document.getElementsByClassName("form-control auth")[0].value="op";
    });
});

getElementsByClassName("form-control auth")返回一个没有value属性的NodeList。你需要先得到一个元素。

因为,你正在加载一个HTTPS资源并使用PhantomJS 1。在运行PhantomJS时,你应该使用额外的命令行参数:

<>之前——ignore-ssl-errors=true——ssl-protocol=any script.js之前