我正在尝试从android中的this页面中提取Captcha图像。我使用WebView.capturePicture()
方法来获取WebView
的图片。问题是图片包含页面中的每个元素,除了Captcha图像。起初我认为这可能是一个加载问题,并在我的代码中放置一个Thread.sleep()
语句,在页面加载完成后等待2秒以调用WebView.capturePicture()
方法,但结果是相同的。我的代码是:
WebView browser=(WebView)findViewById(R.id.webView3);
browser.getSettings().setJavaScriptEnabled(true);
browser.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
Picture picture=view.capturePicture();
PictureDrawable pd = new PictureDrawable(picture);
Bitmap bitmap = Bitmap.createBitmap(pd.getIntrinsicWidth(), pd.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawPicture(pd.getPicture());
}
browser.loadUrl("https://service2.diplo.de/rktermin/extern/appointment_showDay.do?locationCode=isla&realmId=108&categoryId=205");
问题:您能告诉我为什么WebView.capturePicture()
方法在结果图片中不包含验证码图片吗?
答案 0 :(得分:1)
使用AsyncTask并等待2秒。 由于需要,Captchas通常需要比页面加载更长的时间 要生成。
所以在你的onPageFinished方法中启动一个具有Thread.sleep(2000)的AsyncTask;在它的 doInBackground方法。 在AsyncTask的onPostExecute方法中,您可以将WebView绘制到画布上。