我也用Node寫個每天給她自動發微信的指令碼

趙陽陽發表於2019-03-07

前言

每天都是為公司的應用寫自動化測試指令碼,沒曾把這些自動化應用到生活中,直到逛社群看到 用Node+wechaty寫一個爬蟲指令碼每天定時給女(男)朋友發微信暖心話 發現還有如此好玩的事情。於是賞玩了一把,覺得還可以有更美好的實現方式。

上面的指令碼還要進行掃碼登入的操作,對於經常寫自動化指令碼的我們最好是一勞永逸的。所以這次我的指令碼:只需一次登入。?

下面言歸正傳

準備

  • 一臺Windows作業系統。
  • 在Windows上安裝微信客戶端。
  • 在Windows上安裝CukeTest

這裡說明一下為啥我要用CukeTest?

因為CukeTest是一款專門用來做自動化測試的工具,我經常用它來開發Windows,Web,Mobile,Api等自動化測試指令碼。 本次我主要是想用它來自動化操作Windows版微信,你在Windows上登入微信後,不用管它,它會一直線上,只要電腦不關機,免去掃碼登入的煩惱。

Pc上安裝好微信客戶端,我們手動登入一下,為了方便快速的讓自動化指令碼找到你的哪個她(或他),可以事先把她(或他)的微信置頂。

暖心內容來源

和上面的大佬一樣也是每日一句來自one

天氣資訊來自墨跡天氣

使用庫

這些庫大家如果經常寫自動化測試,應該很熟悉。chromedriver chrome瀏覽器的驅動, selenium-webdriver web自動化庫。
我指令碼的原理比較簡單,就是把平時我們手工操作的步驟轉化為自動化指令碼,自動開啟chrome瀏覽器,去one和墨跡天氣頁面上提取資訊。
因為CukeTest內建的有對Windows控制元件的操作,用CukeTest直接去自動操作微信,把上面提取出來的資訊傳送出去即可。

GitHub

github.com/autonodejs/…

執行

git clone https://github.com/autonodejs/auto_wechat.git
cd auto_wechat
npm install
複製程式碼

使用CukeTest 開啟專案,點選執行就可以看到執行效果。

主要程式碼片段

1.編輯一個故事場景

image.png

2.獲取資訊

獲取One

await driver.get(url);
let css_selector = '.fp-one-cita-wrapper>.fp-one-cita > a'; //元素定位
let text = await driver.findElement({css:css_selector}).getText();
this.oneText = text;
複製程式碼

獲取天氣

await driver.get(url);
let current_tm = await driver.findElement({ css:'div.wea_weather.clearfix > em'}).getText();
let current_state = await driver.findElement({ css:'.wea_weather.clearfix > b'}).getText();
let wea_tips = await driver.findElement({ css:'.wea_tips.clearfix > em'}).getText();
let current_about = await driver.findElement({ css:'.wea_about.clearfix'}).getText();
this.today_wea = `
溫度:${current_tm}°
天氣:${current_state}
${current_about}
${wea_tips}
`
});
複製程式碼

3.微信介面操作

操作微信介面需要在CukeTest中新增虛擬控制元件。

addvirtualimage.gif

新增完虛擬控制元件,呼叫CukeTest提供的API即可。模型管理器中可以看到。

image.png

複製或拖拽相關的方法到程式碼編輯器中即可。

4.執行

runproject.gif

相關文章