Tag: phantomjs

无法评估phantomjs中的jquery函数

我想构建一个phantomjs代理服务,它嵌入了jquery并接受url和javascript代码。 我写了一个很好的例子: var webPage = require(‘webpage’); var page = webPage.create(); page.onInitialized = function() { page.injectJs(‘js_lib/jquery.min.js’); // page.includeJs(‘http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js’); console.log(‘running document-start script.’); }; page.open(“http://example.com”, function(status) { if ( status === “success” ) { // var title = page.evaluateJavaScript(‘$(title).text()’); var title = page.evaluate(function() { return $(“title”).text(); }); console.log(title); } phantom.exit(); }); 为了实现我的目的,需要使用page.evaluateJavaScript(‘$(“title”).text()’); 因为我想将{‘url’:somesite.com, ‘js’:’$(“title”).text()’}传递给此服务。 然后我将代码切换到page.evaluateJavaScript : page.open(“http://example.com”, function(status) […]

幻影没有达到function

接下来,我已经重写了我的脚本,但无法达到我执行数据扫描的function。 结果我的对象为null。 我怎样才能确保达到这个function? 我如何填充对象? (注意我的对象和填充它的方式是基于早期post的讨论,但如果我在下面的脚本中发现任何错误,请告诉我) 错误输出: ReferenceError:找不到变量:angular(不确定这意味着什么……我现在忽略了) http://stage.inc.com/js/Inc5000ListApp.js?UPDATE1:2 http://www.inc.com/inc5000/index.html:2485 阅读关于公司5000中的公司 Inc.com(这是标题,正在打印) null(该对象为null,我不知道为什么??实际上该函数未被访问,但我怎么能纠正这个……) 码 var webPage = require(‘webpage’); var page = webPage.create(); page.open(‘http://www.inc.com/inc5000/index.html’, function(status) { var title = page.evaluate(function(s) { return document.querySelector(s).innerText; }, ‘title’); console.log(title); page.injectJs(‘http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js’); var dataObj= page.evaluate(function() { console.log(‘Reached scrapeData’); var DATA = []; $(‘tr.ng-scope’).each(function(){ var $tds = $(this).find(‘td’); DATA.push({ rank: $tds.eq(0).text(), company: $tds.eq(1).text(), […]

为什么Cookie头没有设置在phantomjs中的同域$ .ajax请求中?

我通过jQuery的$.ajax(request)函数在同一个域内$.ajax(request) 。 不幸的是,Cookie标头永远不会设置(既不是POST也不是GET ),我不知道为什么。 如果我正确理解jQuery Ajax,则应根据页面cookie(如document.cookie )设置Cookie标头。 我已经跟踪了document.cookie并且对我来说似乎它已经正确地更新了(根据Set-Cookie标题)每个xhr响应。 但是在调试请求时,所有都没有设置Cookie标头。 我的请求创建方式的简化版本: var request = { type: ‘POST’, data: ‘theDataIsCorrect=true’, async: false, url: ‘/a/relative/url/like/this?maybe=even&with=this’, // withCredentials does not help (ignored on same domain request anyways) xhrFields: { withCredentials: true }, beforeSend: function(jqXHR) { doStuff(); }, error: function(jqXHR, textStatus, errorThrown) { errorHandling(); }, complete: function(jqXHR, textStatus, errorThrown) { […]

casperJS失败注入jQuery

有谁知道我遇到了怎么样 [warning] [phantom] Failed injecting %s client side. Failed injecting includes/jquery-1.10.2.min.js client side 当我包括在内 ‘includes/jquery-1.10.2.min.js’ 在Casper构造函数中。 有人在这里发布了类似的问题: https ://groups.google.com/forum/#!msg / casperjs / hY4ziaoXIEE / YFi8Sj4JysMJ,但我不明白他们如何在他们的解决方案中加入casper.evaluate(): casper.then( function() { this.evaluate(function($) { console.log($(‘title’).text()); } });

JS测试:从CasperJS和PhanthomJS触发jQuery keypress事件

我的网页有一个输入键按下事件的监听器。 我试图运行下面的casperjs代码来触发此事件,但没有成功。 虽然没有提示错误,但是(evaluate)函数返回true并且代码在我的chrome控制台上正常工作,应该向服务器发送请求的函数结果永远不会发生 casper.then(function(){ var result = this.evaluate(function(term){ var search_form_id = “#search-form”; $(search_form_id).val(term); jQuery(search_form_id).trigger(jQuery.Event(‘keypress’, {which: 13, keyCode: 13})); return true; }, ‘Techcrunch’); console.log(result); }); 这是关于PhantomJS和jQuery事件的任何问题吗?

PhantomJs – 从页面中获取价值。评估+ ajax(同步版)

问题:从page.evaluate ajax请求中提取数据 描述:我通常通过简单地返回它们来获取页面外的变量。 但是,我需要在页面的上下文中创建一个ajax请求,然后我需要从页面的上下文中处理它的结果。 我试图解决的代码是: var theOutput = page.evaluate(function () { return $.ajax({ async: false, url: ‘http://localhost:8080/captcha.php’, data: { filename: ‘C:\\wamp\\www\\images\\0.png’ }, type: ‘post’, success: function (output) { parsed_output = $.parseHTML(output); return parsed_output[4].data.trim(); }, }); }); console.log(theOutput); 变量parsed_output[4].data.trim()是一个字符串。 但是当我记录output我得到一个[object Object] ,其属性为abort, always, complete, done, error, fail, getAllResponseHeaders, getResponseHeader, overrideMimeType, pipe null, progress, promise, readyState, setRequestHeader, […]

PhantomJs脚本中的Ajax请求

问题: phantomJs脚本中的Ajax请求到本地页面不起作用(没有响应) 问题:如何使其工作? 任何想法或可能的解决方案 描述:我正在运行一个phantomJs脚本,我需要访问另一个页面(本地)中由php函数提供的一些数据。 为了做到这一点,我在phantomjs脚本中对该页面使用ajax请求。 但是,请求不会执行任何操作。 该脚本是: page.open(url, function (status) { page.includeJs(‘http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js’, function () { console.log(“Solve Captcha”); $.ajax({ url: ‘captcha.php’, data: { filename: ‘C:\\wamp\\www\\images\\0.png’ }, type: ‘post’, success: function (output) { console.log(‘Solved’); phantom.exit(); }, }); }); }); php页面位于本地WAMP服务器中,并且已经使用ajax(在phantomJs脚本之外)进行了测试,并且工作正常。 脚本和php文件位于文件夹C:\wamp\www ,而图像0.png位于子文件夹C:\wamp\www\images 。 重要说明:页面captcha.php位于localhost中,而phantomJs正在请求非本地页面,即page.open打开非本地url 。 我不明白为什么在phantomJs脚本中提出这个请求是行不通的。 请你帮助我好吗?

PhantomJS并单击表单按钮

我有一个非常简单的HTML表单,我试图用各种数据进行测试。 我使用IE对象在MS Access / VBA中编写了一个原型概念validation。 它工作正常,但完成的测试产品必须使用PhantomJS。 我有页面连接工作,表单填充得很好。 我被困的地方是让提交按钮开火。 我已经梳理了SO并尝试了所有建议,但没有任何工作。 我正在使用PhantomJS 1.9.7并使用直接的JavaScript测试脚本。 我尝试了各种JavaScript技术来触发提交按钮。 为了满足“Just use JQuery”的用户群,我也试过了。 没有什么工作。 当我在测试脚本的末尾渲染表单时,我看到填充了数据的表单耐心地等待点击按钮。 以下是我尝试过的摘要: document.getElementById(‘btnSearch’).click(); $(“btnSearch”).click(); var el = document.getElementById(‘btnSearch’); // Get search button object $(el).click(); document.getElementById(‘Form1’).submit(); 尝试创建一个click事件并从按钮对象中触发它(在下面的代码中) 尝试创建一个click事件并使用相关按钮内部点的坐标从body对象中触发它 以下是表格:(并且请不要对缺乏CSS,使用表格等进行评论/辩论。我对创建网站的人没有任何发言权或影响力。) Da Site Street Address: City: State: AL – Alabama AK – Alaska [The rest of the other states] WI – Wisconsin […]

如何使用按钮更改Phantomjs中的当前页面?

我已经开始使用Phantomjs了,我不明白。 如何使用按钮更改当前页面? 例如,我有一个代码: var page = require(‘webpage’).create(); page.open(‘https://ru-ru.facebook.com’, function() { page.injectJs(‘jQuery.js’); page.evaluate(function() { $(‘#email’).val(‘MyLogin’); $(‘#pass’).val(‘MyPass’); $(‘#u_0_l’).click(); }); page.render(‘example.png’); phantom.exit(); }); 所以点击一个按钮后我需要转到下一页。 我怎样才能做到这一点?

Phantom.js – 在警报框内获取文本

是否可以使用Phantom.js将文本放入警报框中? var page = require(“webpage”).create() , assert = require(“assert”); page.open(“http://www.mysite.com/page”, function (status) { page.includeJs(“jquery-1.10.2.min.js”, function () { var alertText = page.evaluate(function () { //This should cause an alert dialog to appear $(‘button[type=”submit”]’).click(); //This doesn’t work, but is there some equivalent to this? return $(“alert”).val(); }); assert.equal(alertText, “Thanks for clicking Submit!”); }); });