我试图弄清楚如何通过HTTP代理路由我的请求.
我正在初始化这样的webdriver:
user_agent = 'my user agent 1.0'
DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = user_agent
driver = webdriver.PhantomJS()
Run Code Online (Sandbox Code Playgroud)
我已经浏览了文档和源代码,似乎无法通过webdriver找到使用phantomjs代理服务器的方法.
有什么建议?
我可以在PhantomJS和/或CasperJS上使用交互式JS调试器吗?
intellij-idea javascript-debugger webstorm phantomjs casperjs
我需要一些身份验证才能获得特定网址.在浏览器中我只需要登录一次,因为可以使用cookie中的会话ID的其他相关URL不需要转到登录页面.同样,我可以--cookies-file=cookies.txt在phantomjs的命令行中使用cookie文件中生成的cookie 来打开需要相同cookie细节的其他页面.
请建议.
有没有办法一致地检测PhantomJS/CasperJS?我一直在处理一堆用它构建的恶意垃圾邮件,并且已经能够基于某些行为阻止它们,但我很好奇是否有一种坚如磐石的方式来了解CasperJS是否正在使用中,如同处理不断适应变得有点烦人.
我不相信使用Captchas.他们是负面的用户体验,ReCaptcha从未在我的MediaWiki安装上阻止垃圾邮件.由于我们的网站没有用户注册(匿名讨论板),我们需要为每个帖子都有一个Captcha条目.我们每天会收到数千个合法的帖子,而且Captcha会看到这个号码.
我知道有一些网页PhantomJS/CasperJS无法打开,我想知道这个是否是其中之一:https://maizepages.umich.edu .CasperJS给出错误:PhantomJS无法打开页面状态=失败.
我尝试忽略-ssl-errors并更改我的用户代理但我不确定如何确定使用哪些.
我现在正在做的就是基本的casper设置在casper.start(url, function () { ... })哪里url=https://maizepages.umich.edu;
我的项目正在使用:Node,Coffeescript,SocketIO,Browserify和Mocha.(用于标准服务器端单元测试的mocha)
我想使用无头浏览器自动化一些客户端接口测试.PhantomJS看起来是理想的选择(由于网络套接字支持而选择Zombie).
PhantomJS页面警告它不是测试运行器,我理解,他们建议使用mocha-phantomjs项目来推动测试.
所以我已经能够运行样本测试(例如mocha-phantomjs tests/mixed.html),但我当前的问题实际上是在测试中使用PHANTOM.mocha-phantomjs repo中的所有样本测试似乎都使用标准的mocha服务器端单元测试.
例如,我可以轻松mocha-phantomjs tests/mixed.html地查看无聊的旧单元测试.或者我可以运行phantomjs tests/login.coffee以加载我的登录屏幕...但是如何将两者结合起来对我应该在登录屏幕上看到的内容进行断言?
我在网上找不到任何这方面的例子,我正在努力理解最好的方法.
希望这一切都有意义.在此先感谢您的任何帮助.
更新:我发现了作者的以下建议(这里),但我真的不明白该怎么做:phantomjs lib/mocha-phantomjs.coffee test/mixed.html
使用PhantomJS,我想注入一些JS,好像<script>在任何其他<script>标签之前有一个额外的标签.这是因为页面上的脚本使用了PhantomJS没有的一些功能,即Function.prototype.bind和window.webkitRequestAnimationFrame.我有一个JS文件,其中包含两个自定义实现,我希望PhantomJS在页面上运行脚本时使用它们.
困难在于,如果我在page.open之前执行page.injectJs,脚本将被注入到空白页面中,而不会被转移到正在打开的页面.
或者,如果我在page.open之后执行page.injectJs,那么由于JavaScript错误(未定义的函数)已经发生,为时已晚.
我找到了一种似乎有用的方法,但显然是一种黑客行为:
page.onResourceReceived = function() {
page.injectJs('phantom-hacks.js')
};
Run Code Online (Sandbox Code Playgroud)
这注入了很多次(显然每个资源两次),但这没关系,因为我的脚本是幂等的.但是,我想知道正确的方法:在页面上的任何脚本运行之前只注入一次.
谢谢 :)
我有输入元素如图所示:
<input type="text" class="bg-white" id="couponCode" value="">
如何使用casperJs设置/填充其值
我正在尝试抓取一个网页,其中包含许多下拉列表,并且表单中的值是相互依赖的.在许多方面,我需要代码等待页面刷新完成.例如,从列表中选择一个选项后,代码应该等到根据此选择填充下一个列表.如果有人可以指点,那将是非常有帮助的,因为奇怪的是我的代码只有在我提供了如此多的不必要的日志记录语句之后才能工作,这反过来又造成了一些延迟.任何改进代码的建议都会非常有用.
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
userAgent: 'Mozilla/5.0 poi poi poi (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
pageSettings: {}
});
casper.start('http://www.abc.com', function () {
console.log("casper started");
this.fill('form[action="http://www.abc.com/forum/member.php"]', {
quick_username: "qwe",
quick_password: "qwe"
}, true);
this.capture('screen.png');
});
casper.thenOpen("http://www.abc.com/search/index.php").then(function () {
this.click('input[type="checkbox"][name="firstparam"]');
this.click('a#poi');
casper.evaluate(function () {
document.getElementsByName("status")[0].value = 1;
document.getElementsByName("state")[0].value = 1078;
changeState(); //This function is associated with the dropdown ie state
and the page reloads at this point. Only after complete refresh …Run Code Online (Sandbox Code Playgroud) 上下文:我对我的ember-cli应用程序进行了验收测试,测试在Chrome中运行得很好.然而,在phantomjs中,我的测试失败了 - 用户界面不会以同样的方式创建,我正在尝试找出原因.(我认为测试因https://github.com/ember-cli/ember-cli/issues/1763而被打破,但是如何调试的一般问题仍然存在)
在Chrome中,我可以在我的测试中使用标准调试工具,一切都很好 - 但是在phantomjs中,我无法使用调试器来实现它.我也没有看到console.log()消息显示在输出中 - 我得到的是我的终端窗口中的测试结果列表.
我可以通过编写类似的东西来获取诊断信息
equal(true, false, "This is a log message");
Run Code Online (Sandbox Code Playgroud)
然后我得到消息作为失败的断言的详细信息,或者我可以尝试找出DOM中的内容
equal(true, false, document.getElementsByClassName("my-class".innerHTML);
Run Code Online (Sandbox Code Playgroud)
但是这两个:停止测试进一步,b:只让我记录测试本身的信息,而不是我的应用程序.
有没有办法在"ember test"之外运行我的测试,或者某种方式附加到正在运行的测试过程?或者,有没有办法让console.log()消息显示在输出中?
phantomjs ×10
casperjs ×5
javascript ×2
web-scraping ×2
automation ×1
ember-cli ×1
ember.js ×1
ghostdriver ×1
mediawiki ×1
mocha.js ×1
node.js ×1
proxy ×1
python ×1
spam ×1
ssl ×1
webdriver ×1
webstorm ×1