分類 Automation 中的文章

我要訂便當 (5): Heroku 填坑小記

在上一集的 將 Python 腳本部署上 Heroku 中,記錄了將 Python 腳本放上 Heroku 的過程,但仍然沒有將我們的 訂便當小幫手 給放上去。之前有稍微提到是因為過程中遇到了一些問題,最後決定將這些問題和找到的前人解決文記錄在這一篇,將來再遇到的時候就可以參考。

  1. SQLite 要改成用 PostgreSQL
  2. 在 Heroku 上執行 Selenium

一、SQLite 要改成用 PostgreSQL

在之前的 我要訂便當(2) —— 用 Python + Sqlite 儲存訂單 中,為了方便及簡單性,選擇了較輕便的 SQLite 來儲存我們爬回來的訂單資訊。然而,SQLite 將資料儲存在小檔案以便於攜帶的做法,在 Heroku 上將會遭遇像是各個 dyno 的資料不同步等許多問題,因此 Heroku 是不建議使用 SQLite 的。

在 Heroku 的開發文件中的 SQLite on Heroku 有關於這部分的詳細說明,並直接提到「If you were to use SQLite on Heroku, you would lose your entire database at least once every 24 hours.」同時,官方也提供了他們的建議:PostgreSQL。相較於輕便但只能同時單一寫入而且還會在 dyno 炸掉的 SQLite,PostgreSQL 的完整性更符合 Heroku 對服務的要求。

關於在 Heroku 上使用 PostgreSQL 的做法,這篇 佈署 Python Flask 網站留言板應用程式到 Heroku + PostgreSQL 資料庫系統 說明得相當詳細。

……

閱讀全文


SikuliX —— 針對圖形介面寫自動化腳本的小幫手

最近因緣際會下開始玩一些自動化測試的小工具,發現即使不是用在正規的測試時也相當實用,畢竟我們這行能讓電腦自動幫我們省事就是一種樂趣嘛。正巧這禮拜比較忙,無法準時推出訂便當系列的續集,因此決定直接紀錄一下試玩 Sikulix 的過程,以後有需要自動化的時候也方便回來參考。

Sikulix 是一款針對圖形介面編寫腳本達到自動操作的軟體,操作上相當方便。主要是將目標的圖示等畫面擷取下來,再編寫程式對目標進行操作。它編寫腳本時使用的語言是 Jython —— 用 Java 實現的 Python,關於 Jython 的基本操作可以參見 Wiki 教程:Jyhton,對於「實現 Python?」這句話感到疑惑的朋友可以參見 知乎:各種 Python 實現的簡單介绍與比較

此外,本篇對於 Sikulix 的參考主要來自於【測試】圖形化的自動測試 Sikuli / SikuliX 的相關技巧以及 Sikulix 圖形辨識自動化測試開發工具兩篇,特此感謝。

……

閱讀全文


我要訂便當 (1): 用 Python + Selenium 控制瀏覽器取得訂單

前言:

這是參加六角鼠年全馬的第一篇,主要是希望能夠養成寫部落格的習慣。由於我本身並沒有主要技能,因此這次參賽文章會以我最近玩的玩具、使用的套件或是遇到的問題做紀錄。

希望能夠派上用場。

目標:使用 PythonSelenium 連線到訂便當網站,自動輸入帳號密碼登入後,取回網站上的訂單資訊

(2020/12/4) 更新: 由於訂便當網站改版,所以程式碼已經不能照抄了。但有興趣的朋友還是能自己摸索做點變動,也能夠照常進行喔,加油~

最近在公司的時候有個莫大的煩惱,就是關於辦公室團購這回事兒。現在待著的公司主要是從 Dinbendon 這套系統來揪團購,舉凡品客、火鍋等都在上面訂過,據我觀察最受歡迎出現最多次的當屬雞排了。煩惱就在於,每次都會錯過雞排的團購,光在辦公室聞著四面八方傳來的雞排香味,就令人無法忍受!因此趁著這個機會,來嘗試能不能像之前的 PTT 一樣來弄出一個通知,順便玩玩最近看到的工具。這系列的文章會分成多個部分,主要是以使用的工具來分集。

由於在從團購網取得訂單的過程中需要跟網頁進行互動,因此這次要使用的工具是 Selenium

Selenium 是一個對網頁做自動化測試的工具,但我個人比較常在爬蟲的時候用到XD。它能夠經由腳本或錄製的方式對瀏覽器進行操作,並且也支援相當多語言可以使用,例如我同事便使用 C# 和 Hangfire 來完成訂便當的目標(對,這麼無聊的人不只我一個),而我則用相對比較熟悉的 Python 來實作。

……

閱讀全文