我正在使用PhantomJS登录网站做某事.该网站使用OAuth进行登录.点击该按钮上的"登录"按钮,即可转到OAuth服务.在那里输入您的凭据并单击"提交",您将被重定向回原始站点.我的脚本工作正常,但依赖于看似不太强大的超时.
如何重写此代码,以便setTimeout我可以等到页面准备就绪,而不是使用它.我经常看到页面没有准备好的错误,因此jQuery没有初始化.
我对Javascript不是很好,所以一个例子会有所帮助.这是我经过大量谷歌搜索后一起攻击的内容.这是我的代码:
var page = require('webpage').create();
var system = require('system');
page.settings.resourceTimeout = 10000;
page.onResourceTimeout = function(e) {
console.log("Timed out loading resource " + e.url);
};
page.open('https://mysite.com/login', function(status) {
if (status !== 'success') {
console.log('Error opening url');
phantom.exit(1);
} else {
setTimeout(function() {
console.log('Successfully loaded page');
page.evaluate(function() {
$("#submit-field").click(); //Clicking the login button
});
console.log('Clicked login with OAuth button');
setTimeout(function() {
console.log('Addding the credentials');
page.evaluate(function() {
document.getElementById("username").value = 'user@example.com';
document.getElementById("password").value = 'P@ssw0rd';
document.getElementById("Login").click();
});
console.log('Clicked login button');
setTimeout(function() …Run Code Online (Sandbox Code Playgroud) 我想SimpleHTTPServer在一个单独的线程中启动一个,同时time.sleep(100)在主要的一个中执行其他操作(此处).以下是我的代码的简化示例:
from SimpleHTTPServer import SimpleHTTPRequestHandler
from BaseHTTPServer import HTTPServer
server = HTTPServer(('', 8080), SimpleHTTPRequestHandler)
print 'OK UNTIL NOW'
thread = threading.Thread(target = server.serve_forever())
print 'STUCK HERE'
thread.setdaemon = True
try:
thread.start()
except KeyboardInterrupt:
server.shutdown()
sys.exit(0)
print 'OK'
time.sleep(120)
Run Code Online (Sandbox Code Playgroud)
但是,该线程仍然是"阻塞",即不作为守护进程启动,并且解释器无法到达print 'OK'.它既没有达到STUCK HERE.
我已经知道线程只会在调用时被初始化,threading.Thread(...)并且主线程仍然会更进一步,直到找到thread.start启动它的指令.
有没有更好的方法来完成这项任务?
在Django管理控制台中,所有部分(菜单链接)都来自带有数据库表的模型,但是如果我需要一个没有相应模型对象(没有数据库表)从模型中获取其他部分数据的部分,我还需要做什么?
有任何想法吗?谢谢
我想写一个代码美化器,我想用Ruby来做.有人能告诉我一个开始的地方吗?我在网上看过很多代码美化,但我从来没有遇到过如何编写代码的任何教程.对于从未承担任何项目(例如编写编译器,解析器等)的人来说,这是一项非常具有挑战性的任务吗?
(还有其他语言更适合这种任务,不包括C/C++吗?)
在我最近的一个SO问题中,有人建议我使用Loader我的解决方案.所以在这里我试图了解如何实现一个简单的AsyncTaskLoader
这是我想出的:
public class Scraper extends AsyncTaskLoader<List<Event>> {
List<Event> lstEvents;
public Scraper(Context context) {
super(context);
}
public List<Event> loadInBackground() {
//This is where I will do some work and return the data
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我所知道的.我阅读了文档,AyncTaskLoader但我从来没有遇到任何如此神秘和混乱的东西.有一百万种方法,所有这些方法都是相互矛盾的,看着它们是不可能的,它们被调用的顺序,甚至它们是否应该被覆盖和调用.这项任务的生命周期是一个该死的噩梦.
我正在寻找的只是简单地抓取一些数据并将其返回.我还想将它存储在一个类变量中,以便我在下一次立即返回它而不必再次刮掉所有数据.
我没有打开游标,流或类似的东西,只是一个简单的变量lstEvents(可能很大).我不想泄漏内存和浪费资源,所以如果有人可以解释我需要关闭/无效的地方和时间以使这项任务有效,我会很高兴.
我应该在哪里将数据存储到类变量中?Shoudl我在我的loadInBackground方法结束时这样做或者我应该在deliverResult方法中这样做吗?
在这个简单的场景中,是否有我真正需要检查任务是否被取消或是否被重置的地方,或者我是否应该简单地不覆盖这些方法并让它AsyncTaskLoader处理它.
如果有人知道,一些脚手架代码会有所帮助.万分感谢.
我一直在尝试升级JSON模块以使用Jackson的FasterXML(2.6.3)版本而不是旧的Codehaus模块.在升级过程中,我注意到使用FasterXML而不是Codehaus时命名策略有所不同.
Codehaus在命名策略方面更灵活.下面的测试突出了我用FasterXML面临的问题.我如何配置ObjectMapper它遵循Codehaus相同的策略?
我不能改变JSONProperty注释,因为有数百个注释.我希望升级在命名策略方面向后兼容.
import java.io.IOException;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
/*import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.PropertyNamingStrategy;*/
import org.junit.Assert;
import org.junit.Test;
public class JSONTest extends Assert {
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Product {
@JsonProperty(value = "variationId")
private String variantId;
@JsonProperty(value = "price_text")
private String priceText;
@JsonProperty(value = "listPrice")
public String listPrice;
@JsonProperty(value = "PRODUCT_NAME")
public String name;
@JsonProperty(value = "Product_Desc")
public String description;
}
private static final String VALID_PRODUCT_JSON = …Run Code Online (Sandbox Code Playgroud) 我想创建一个Intent,打开屏幕显示当前设备的通话记录?
我如何指定这样的意图?
在我的activity的onCreateOptionsMenu方法中,我只是夸大我的菜单布局文件并附加它.
我想基于全局变量的值a显示/隐藏一些菜单项,我在onPrepareOptionsMenu方法中这样做.我已经读到这是正确的做法.
我的onPrepareOptionsMenu方法并不总是开火.我不知道为什么,但是当我按下手机上的"菜单"按钮时,它并不总是会触发.也许它与内部状态有关.
在创建Acitvity时似乎会触发它.第一次按"菜单"按钮不会导致它触发,但如果我再次按下菜单按钮,它就可以正常工作.
有没有办法可以迫使它onPrepareOptionsMenu开火.
谢谢
Smok建议使用该invalidateOptionsMenu方法使菜单项无效,但这会导致onCreateOptionsMenu方法触发.这是我的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
System.out.println("onCreate");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconified(false);
searchView.requestFocusFromTouch();
return true;
}
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
System.out.println("prepared");
if (this.objAdapter == null) {
menu.findItem(R.id.sort).setVisible(false);
menu.findItem(R.id.filter).setVisible(false);
menu.findItem(R.id.group).setVisible(false);
} else {
menu.findItem(R.id.sort).setVisible(true);
menu.findItem(R.id.filter).setVisible(true);
menu.findItem(R.id.group).setVisible(true);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
从我的onCreateOptionsMenu方法中可以看出,再次调用它会导致焦点丢失SearchView.
每当我尝试使用文档构建GCM演示服务器时ant,我会得到17个编译错误.似乎缺少一些GCM库.我该如何解决这些问题?
Errors:
Buildfile: build.xml
init:
compile:
[javac] Compiling 7 source files to /root/gcm/samples/gcm-demo-server/build/classes
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:18: package com.google.android.gcm.server does not exist
[javac] import com.google.android.gcm.server.Constants;
[javac] ^
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:19: package com.google.android.gcm.server does not exist
[javac] import com.google.android.gcm.server.Message;
[javac] ^
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:20: package com.google.android.gcm.server does not exist
[javac] import com.google.android.gcm.server.MulticastResult;
[javac] ^
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:21: package com.google.android.gcm.server does not exist
[javac] import com.google.android.gcm.server.Result;
[javac] ^
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:22: package com.google.android.gcm.server does not exist
[javac] import com.google.android.gcm.server.Sender;
[javac] ^
[javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:46: cannot …Run Code Online (Sandbox Code Playgroud) 我正在使用RabbitMQ作为我的消息代理,我的工作人员是芹菜任务.我正在尝试诊断一个问题,我将任务排入RabbitMQ,但Celery不会选择.
有没有办法可以检查RabbitMQ中哪些任务被排队?我想查看它们排队的日期和时间,指定任何ETA,参数和任务名称.
我无法在文档中找到这些信息 - 也许我忽略了它 - 并希望你们中的一些人可能知道检查任务队列的简单方法.谢谢.
android ×4
java ×4
python ×2
android-menu ×1
ant ×1
calllog ×1
celery ×1
django ×1
django-admin ×1
django-forms ×1
fasterxml ×1
httpserver ×1
jackson ×1
javascript ×1
json ×1
phantomjs ×1
rabbitmq ×1
ruby ×1