一、 模擬點(diǎn)擊操作應(yīng)用場景當(dāng)我們需要對(duì)一個(gè)網(wǎng)頁上的某個(gè)按鈕進(jìn)行多次點(diǎn)擊以求得某種“好處”的時(shí)候,例如天貓的搶紅包活動(dòng),我們可能需要點(diǎn)擊N次之后才有可能獲得一個(gè)紅包,但是這個(gè)N是一個(gè)未知數(shù),有可能我們要不停地點(diǎn)擊半個(gè)小時(shí)甚至一個(gè)小時(shí)都還無法獲得,自己估計(jì)也會(huì)點(diǎn)鼠標(biāo)點(diǎn)得醉了。因此,針對(duì)這種情況,我們希望自己寫一個(gè)小工具來讓計(jì)算機(jī)幫我們做這件事。 既然是讓計(jì)算機(jī)模擬我們的點(diǎn)擊操作,其思路自然是找到指定的按鈕或圖片,循環(huán)對(duì)其執(zhí)行click事件。于是,我們開始對(duì)其做一個(gè)最簡單的實(shí)現(xiàn)來看看其基本思路。首先,我們準(zhǔn)備一個(gè)網(wǎng)站,這里我是用ASP.NET開發(fā)了一個(gè)網(wǎng)頁,其中有一張圖片作為搶紅包的按鈕圖片,然后寫了一個(gè)一般處理程序。 (1)前端網(wǎng)頁的HTML代碼: ![]() 其顯示效果如下圖所示: ?。?)后端一般處理程序代碼: ![]() 當(dāng)用戶點(diǎn)擊前端網(wǎng)頁中的圖片時(shí),會(huì)發(fā)出一個(gè)AJAX請(qǐng)求到服務(wù)端,服務(wù)端會(huì)生成一個(gè)1到100之間的隨機(jī)數(shù)來模擬概率,只有在隨機(jī)生成的數(shù)字達(dá)到95以上(即5%的概率)才給用戶返回獲得紅包的效果。 ?、?zèng)]有獲得紅包的點(diǎn)擊后的效果: ②獲得紅包的點(diǎn)擊后的效果: 二、借助WebBrowser控件實(shí)現(xiàn)自動(dòng)點(diǎn)擊2.1 強(qiáng)大的控件—WebBrowser新建一個(gè)WindowsForm項(xiàng)目,拖入一個(gè)GroupPanel、TextBox、Button以及WebBrowser控件構(gòu)成下面的界面效果: 2.2 借助HtmlElement.InvokeMember方法模擬點(diǎn)擊
void btnGetMoney_Click(object sender, EventArgs e) { AutoClick(10); }void AutoClick(int count = 1) { HtmlDocument dom = webBrowser.Document;if(dom == null) {return; }var btn = dom.GetElementById("btnGetMoney");for (int i = 0; i < count; i++) { btn.InvokeMember("click"); } } 在C#中封裝了針對(duì)DOM樹的類:HtmlDocument,每一個(gè)Html標(biāo)簽都被封裝為HtmlElement。這里我們首先通過DOM操作(GetElementById)找到要點(diǎn)擊的button按鈕,然后一個(gè)循環(huán)操作,通過封裝的InvokeMember方法執(zhí)行click事件。默認(rèn)情況下,這個(gè)方法只會(huì)執(zhí)行一次,當(dāng)然這里我們模擬了10次。 2.3 簡單模擬自動(dòng)點(diǎn)擊的效果演示三、借助Google瀏覽器擴(kuò)展插件實(shí)現(xiàn)自動(dòng)點(diǎn)擊3.1 關(guān)于Google瀏覽器擴(kuò)展插件Chrome是什么在此就不做贅述了,想必看到這篇文章的人對(duì)其都非常熟悉。Chrome一個(gè)突出的特點(diǎn)就是允許用戶開發(fā)第三方插件以擴(kuò)展瀏覽器功能。雖然IE、火狐也都支持第三方插件對(duì)瀏覽器功能進(jìn)行拓展,但對(duì)其開發(fā)遠(yuǎn)沒有Chrome瀏覽器插件方便,加之Chrome瀏覽器市場占有率持續(xù)增長,大家對(duì)Chrome瀏覽器插件的開發(fā)更加感興趣。下圖是迅雷針對(duì)Chrome瀏覽器開發(fā)的擴(kuò)展插件。 3.2 開發(fā)自動(dòng)點(diǎn)擊插件AutoClickDemo?。?)插件的總目錄:manifest.json 每個(gè)Chrome插件都包含一個(gè)manifest.json的文件,這是Chrome插件的總目錄,里面定義了每個(gè)資源都是做什么的。manifest.json文件里是一個(gè)json類型的數(shù)據(jù)。 按chrome開發(fā)規(guī)范,我們首先建一個(gè)文件夾,如D:\AutoClickDemo\,在該文件夾下新建一個(gè)名為manifest.json的文本文件,并按實(shí)際情況放一個(gè)圖片文件,作為插件的圖標(biāo)。然后新建一個(gè)名為myscript.js的js腳本文件,作為我們需要自定義模擬點(diǎn)擊的腳本文件。最后,如果需要用到j(luò)Query,還需要把jQuery放到文件夾目錄中: 該manifest.json文件的內(nèi)容和解釋如下: 具體代碼為: { "name": "刷紅包(演示)", "version": "1.0", "manifest_version":2, "description": "This is a auto click plug-in, you can use it in the web site", "icons":{"16":"16.png","48":"48.png","128":"128.png"}, "permissions": ["http://*/*"], "browser_action": { "default_icon": "16.png" }, "content_scripts":[ { "matches":["http://localhost:4351/*"], "js":["jquery-1.7.1.min.js","myscript.js"] } ] } ?。?)自定義的腳本:myscript.js 剛剛manifest.json只是幫我們生成了一個(gè)目錄給Chrome瀏覽器,具體的操作還得自定義一個(gè)js腳本來生成。代碼很簡單,就是每隔1秒鐘點(diǎn)擊一次按鈕。寫好自定義腳本后,在Chrome瀏覽器中添加這個(gè)擴(kuò)展插件,以后在打開指定網(wǎng)頁時(shí)都會(huì)加載我們的自定義腳本來完成我們想要的操作。 ?。?)為Chrome添加擴(kuò)展插件 在Chrome菜單中,選擇 工具-擴(kuò)展程序 ,進(jìn)入以下界面。然后勾選住 開發(fā)者模式,然后加載正在開發(fā)的擴(kuò)展程序。 ?。?)打開指定網(wǎng)頁體驗(yàn)?zāi)M點(diǎn)擊效果 四、小結(jié)本次的小插件開發(fā)以模擬點(diǎn)擊一個(gè)“搶紅包”按鈕為場景,以兩種方式實(shí)現(xiàn)了一個(gè)簡單得不能再簡單的刷紅包效果,但是其基本思路都我們都已經(jīng)了解了。以后再面對(duì)這種應(yīng)用,可以自己寫一些功能豐富的插件或者程序來實(shí)現(xiàn)了。 作者:周旭龍 |
|