尝试使用PhantomJS登录时,我发现了一个有趣的问题.我不知道为什么它真的发生了.
基本上你启动一个远程调试器,如下所示:
/usr/local/bin/phantomjs --web-security=no --remote-debugger-port=13379 --remote-debugger-autorun=yes /tmp/test.js
Run Code Online (Sandbox Code Playgroud)
在远程调试器中:
> location.href = "https://www.mysite.com/login"
> $('input[name="username_or_email"]').val('blah@email.com')
> $('input[name="password"]').val('wrongpassword')
> $('button[type="submit"]').submit()
Run Code Online (Sandbox Code Playgroud)
在Chrome中执行此操作会在XHR请求后给我正确的"错误密码"消息,而使用phantomjs会给我一个通用错误,因为没有使用phantomjs发送cookie(我检查了标题).
我很困惑为什么phantomjs不发送带有POST请求的cookie.有谁知道我们怎么能让phantomjs发送带有所有请求的cookie呢?设置cookie文件也没有任何区别.
我想下载一个CSV文件,它是通过POST请求点击按钮生成的.我在casperJs和phantomJS论坛上进行了最好的研究并空手而归.在像firefox这样的普通浏览器中,在发布请求后会出现浏览器下载对话窗口.如何在PhantomJS中处理这种情况
TTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
Content-disposition: attachment;filename=ExportData.csv
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Fri, 19 Apr 2013 23:26:40 GMT
Content-Length: 65183
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PhantomJS下载一些PDF文件.当我单击提交按钮时,没有用于下载PDF的直接URL,因为它调用了一些内部JavaScript函数.
这是我用来下载PDF文件的代码:
page.open(url, function(status){
page.evaluate(function(){
document.getElementById('id').click();
});
});
page.onResourceReceived = function(request){
console.log('Received ' + JSON.stringify(request, undefined, 4));
};
Run Code Online (Sandbox Code Playgroud)
'id'是提交按钮的元素id.这里的问题是,即使我得到响应(内部onResourceReceived回调)作为JSON格式,但我无法将附件保存为某些PDF文件.
当我运行上面的代码时,我得到以下输出作为JSON字符串:
Received {
"contentType": "application/pdf",
"headers": [
// Some other headers.
{
"name": "Content-Type",
"value": "application/pdf"
},
{
"name": "content-disposition",
"value": "attachment; filename=FILENAME.PDF"
},
],
"id": 50,
"redirectURL": null,
"stage": "end",
"status": 200,
"statusText": "OK",
"url": "http://www.someurl.com"
}
Run Code Online (Sandbox Code Playgroud)
请使用PhantomJS建议解决方案.谢谢!
我的测试页面包含一个onclick进行ajax调用的链接,如下所示
<a title="test delim" alt=""
onclick="$find('MetricsReport').exportData('TAB');"
href="javascript:void(0)"
style="color: rgb(50, 50, 50); . . . ">Click to download</a>
Run Code Online (Sandbox Code Playgroud)
单击上面的链接后,报告将下载到默认下载位置.
我正在用java selenium测试它
((JavascriptExecutor) driver).executeScript("$find('MetricsReport').exportData('TAB');");
Run Code Online (Sandbox Code Playgroud)
它工作正常ChromeDriver,但不起作用PhantomJSDriver.不会抛出任何错误.它有点执行但没有任何反应.该报告未下载
我怎样才能使用它PhantomJSDriver?