實在抱歉 昨天晚上說好要發源碼的 可是因為租同一個房子的主臥的女生回家過年好像把路由電源斷了 沒有上成網沒有發成。 其實提到的第一個開源項目已經基本完成準系統 只是需要一點修改 今天有時間的話 我會寫一下怎麼使用tessocr和extendedwebbrowser
今天遊戲新版本要上線 忙著改BUG們 快九點才從辦公室走 回家現裝的BT5蹭隔壁的無線來上網發源碼了
源碼扔到codeplex上了 http://book12306ticket.codeplex.com/
這樣在辦公室哪的也能改了 沒時間整理 有個第三方類直接扔到bin裡一起上傳了 大家自己ref一下
本文中提到的代碼全部來源於網上的開源項目
花了不到兩個小時拼湊而成的程式就可以實現兩分鐘從登入到付款的全部操作.
下面是本文
要解決的問題:
1登入不上去
2登入上去後提交不上訂單
3提交上訂單後付款不成功要重新登入
開始解決問題:
首先要有一個從登入到訂票全部流程的實現,而且要自動化的實現。從登入到訂票這個流程codeplex上的一個開源項目
TrainSearch http://myticketsearch.codeplex.com/ 基本實現了 而且結合了Webbrowser空間可以在登入成功後共用一個session,實現網頁不用再次登入。
但是這個項目不夠自動化要手動輸入驗證碼
於是本人最初的修改是利用Tessocr進行驗證碼識別(利用Tessocr受到了Java的訂票開源項目的啟發 http://code.google.com/p/go-home/ )
之後發現有人利用驗證碼不重新整理的BUG(雖然早知道有這個BUG 但是沒有想到他們竟然六個月不修這個BUG) 於是修改了下代碼的邏輯之請求一次驗證碼。
這樣就解決了前兩個問題
最後一個問題就是付款 付款要再登入啊 什麼坑爹的邏輯啊
而且由於我們Webbrowser維持的session會因為“網上支付”那個按鈕是target="_blank" 會彈出新的IE視窗傳遞不了我們Webbrowser維持的Session
這裡就需要不彈出IE 於是用到了又一個開源項目ExtendedWebBrowser http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx
這樣Session的問題解決了 不用登入那個破網頁 直接一個程式解決了 下面程式