这是我的代码 – case BrowserType.PhantomJS: var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(_rootPath, @"Packages\")); var cookieFilePath=Path.Combine(_rootPath, @"Packages\cookie.txt"); if (!File.Exists(cookieFilePath)) File.Create(cookieFilePath); var phantomjsoptions = new PhantomJSOptions(); driver = new PhantomJSDriver(service,phantomjsoptions); var cookieJar = driver.Manage().Cookies; driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL); cookieJar.AddCookie(new Cookie("x", "12345")); return driver; 基本上问题是,我无法login到我的testing应用程序,因为我得到一个错误说 – “您的浏览器设置为阻止cookies”,我试过一切,但我似乎无法得到解决scheme….我该怎么办? 请帮助我在这里。让我知道是否有一些细节丢失。
我试图用PhantomJS设置远程debugging,没有太多的运气。 我正在按照https://github.com/ariya/phantomjs/wiki/Troubleshooting上的说明进行操作。 我有一个名为debug.js的小程序: var system = require('system' ), fs = require('fs'), webpage = require('webpage'); (function(phantom){ var page=webpage.create(); function debugPage(){ console.log("Refresh a second debugger-port page and open a second webkit inspector for the target page."); console.log("Letting this page continue will then trigger a break in the target page."); debugger; // pause here in first web browser […]
我想在node.js中使用CasperJS。 我已经提到以下URL在node.js中使用CasperJS: https://github.com/sgentle/phantomjs-node http://casperjs.org/index.html#faq-executable 在上述URL的帮助下,我编写了下面的代码: //DISPLAY=:0 node test2.js var phantom = require('phantom'); console.log('Hello, world!'); phantom.create(function (ph) { ph.casperPath = '/opt/libs/casperjs' ph.injectJs('/opt/libs/casperjs/bin/bootstrap.js'); var casper = require('casper').create(); casper.start('http://google.fr/'); casper.thenEvaluate(function (term) { document.querySelector('input[name="q"]').setAttribute('value', term); document.querySelector('form[name="f"]').submit(); }, { term: 'CasperJS' }); casper.then(function () { // Click on 1st result link this.click('h3.r a'); }); casper.then(function () { console.log('clicked ok, new […]
我遵循这些指示 (除了复制可执行文件到我的PATH,因为我似乎无法find它,似乎并不需要)。 然后我在我的公共javascripts目录中创build了一个名为image_render.js的文件 console.log('Hello, world!'); phantom.exit(); 在里面,保存它,并在我的terminal运行phantomjs render_image.js 。 但是,我的terminal不能识别命令: -bash: phantomjs: command not found 我做错了什么?
我正在浏览Selenium WebDriver的文档,例如它可以驱动Chrome。 我在想,“驾驶”PhantomJS不是更高效吗? 有没有办法用PhantomJS来使用Selenium? 我的预期用途将是networking抓取:我刮的网站加载了AJAX和许多可爱的JavaScript,我想这个设置可能是一个很好的替代我目前正在使用的Scrapy Python框架。
我用Python启动并closures了phantomjs from selenium import webdriver driver = webdriver.PhantomJS() driver.get(url) html_doc = driver.page_source driver.close() 但脚本结束执行后,我仍然在我的Mac活动监视器中findphantomjs一个实例。 实际上,每次运行脚本时phantomjs创build一个新的进程phantomjs 。 我应该如何closures驱动程序?
在PhantomJS中,webpage.open接受一个状态参数设置为“成功”或“失败”的callback。 根据文档,如果没有networking错误发生,将会“成功”,否则“失败”。 有没有办法看到导致失败的底层networking错误? 我试图加载的URL工作正常,当我把它放在我的浏览器中,当我得到'失败'的信息后,我看到了我的页面,我打电话之前,我打电话给webpage.open(所以我可以'只是忽略失败)。 我正在使用Phantom进行testing,所以理想情况下,我希望在webpage.open失败时(或者更好地让它永远不会失败!)轻松获得有用的错误信息。
我已经在这方面做了一些研究,但没有find任何解决办法。 我有一个网站,其中asynchronousajax调用Facebook(使用JSONP)。 我用VCRlogging了所有的HTTP请求到Ruby端,所以我认为这个function也适用于AJAX调用。 所以我玩了一下,提出了一个代理尝试。 我使用PhantomJS作为Capybara内部集成的无头浏览器和微妙的手段。 Poltergeist现在被configuration为使用这样的代理: Capybara.register_driver :poltergeist_vcr do |app| options = { :phantomjs_options => [ "–proxy=127.0.0.1:9100", "–proxy-type=http", "–ignore-ssl-errors=yes", "–web-security=no" ], :inspector => true } Capybara::Poltergeist::Driver.new(app, options) end Capybara.javascript_driver = :poltergeist_vcr 出于testing目的,我写了一个基于WEBRICK的代理服务器,它集成了VCR: require 'io/wait' require 'webrick' require 'webrick/httpproxy' require 'rubygems' require 'vcr' module WEBrick class VCRProxyServer < HTTPProxyServer def service(*args) VCR.use_cassette('proxied') { super(*args) } end […]
我正在使用PhantomJS page.evaluate()做一些刮擦。 我的问题是,我传递给webkit页面的代码是沙箱,所以没有访问我的主幻像脚本的variables。 这使得难以使通用的刮码。 page.open(url, function() { var foo = 42; page.evaluate(function() { // this code has no access to foo console.log(foo); }); } 我怎么能把参数推入页面?
有一个网站,我想刮,首先加载一个HTML / JS修改表单input字段使用JS然后POST。 我怎样才能得到POST页面的最终html输出? 我试图用phantomjs做到这一点,但似乎只有一个选项来呈现图像文件。 谷歌search表明它应该是可能的,但我不知道如何。 我的尝试: var page = require('webpage').create(); var fs = require('fs'); page.open('https://www.somesite.com/page.aspx', function () { page.evaluate(function(){ }); page.render('export.png'); fs.write('1.html', page.content, 'w'); phantom.exit(); }); 这个代码将被用于客户端,我不能指望他安装太多的包(nodejs,casperjs等) 谢谢