为什么我不能在phantomJS中加载我的页面?
Why can't I load my page in phantomJS?
我想访问一个本地设备的网页。这是该页面的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之前相关文章:
- 我的加载更多功能适用于按钮单击,但它不适用于滚动
- jQuery 限制我正在加载/追加的字符数
- 优化 CSS 交付.但我正在加载 JS 的样式
- $(窗口).on('scroll',函数 () 当滚动到 50% 时,我想加载很少的数据
- jQuery Mobile添加了我可以加载的文本't拆卸
- 当我重新加载页面时,我放在文本框中的文本保持不变,我能让这种情况不发生吗
- 我如何加载javascript模板与他们的id
- require.js:我如何加载一个模块,它在不同的名称下定义了一个名称
- 为什么我的加载处理程序不起作用
- 我如何在网站上加载特定的字体与较少的加载时间
- 当我重新加载页面时,我之前的评论消失了——这与本地存储有关
- 我可以订阅openwindow的加载事件吗?
- Jstree:当我重新加载树时,我不能将所有的复选框重置为默认取消选中
- 我可以加载一个新的页面时,有人点击关闭按钮在浏览器上
- 为什么以及如何在console.log中引用变量来修复我遇到的加载错误?
- 我的加载更多的按钮是不显示,尽管一切都是正确的,根据我
- 为什么我的加载更多的按钮后,ajax加载需要另一个点击它之前隐藏,即使没有什么要加载
- 如何优化我的加载JQuery函数
- 为什么我的加载没有'不起作用
- 当加载html与ajax在jQuery,我怎么能确保我的加载gif保持可见的整个时间,直到html已添加